我有node.js代码,它获取xml提要,将其导入sax解析器,并将我需要的数据提取到js对象中。
最简单的代码如下所示。
const fetch = require('node-fetch')
const sax = require('sax')
function fetchAndParse(url)
{
const saxStream = require("sax").createStream(strict, {normalize: true, trim: true})
const desiredData = []
saxStream.on("error", function (err) {
...
}).on("opentag", function (node) {
...
}).on("cdata", function(t) {
...
}).on("text", function(t) {
...
}).on("closetag", function (nodeName) {
...
}).on("end", function() {
console.log("END", desiredData)
})
fetch(url)
.then(
res => { res.body.pipe(saxStream) }
)
}
理想情况下,我想把它变成一个 async
功能与使用 await
当调用它时,但目前我不知道如何在它完成时从这里获取数据,因为我唯一能够访问完成的数据的地方是 on("end")
功能。我想我错过了一些基本的东西。
1条答案
按热度按时间mdfafbf11#
我还没有和你一起工作过
sax
所以我不完全确定它的api是什么样子的,但您应该能够返回一个承诺,该承诺可以解决您想要的数据。类似这样的内容(注意:我没有测试这个):