gpt4 book ai didi

node.js - Nodejs 函数被多次调用

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:43 24 4
gpt4 key购买 nike

我正在用nodejs开发一个解析器。因此我请求一个网站并解析 HTML。我正在使用 require("htmlparser") 和 require('follow-redirects').http 来处理请求。

requestSite(options);
console.log("Done\n");
parser.done();

function requestSite(options) {
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.setEncoding('utf8');
res.on('data', function (chunk) {
parser.parseChunk(chunk.toString('utf8'));
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
}

我现在的问题是在 requestSite 函数实际完成其 block 之前调用 did() ,导致以下错误:

Writing to the handler after done() called is not allowed without calling a reset()

如何等待 block 完成?

最佳答案

您没有考虑nodejs的异步性质。它将调用 requestSite,然后继续执行下一条语句,并在 requestSite 执行完成之前调用 parser.done。改为执行此操作。

requestSite(options, parser);
console.log("Done\n");

function requestSite(options, parser) {
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.setEncoding('utf8');
res.on('data', function (chunk) {
parser.parseChunk(chunk.toString('utf8'));
})
.on("end", function(){
parser.done();
})
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
}

关于node.js - Nodejs 函数被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41480895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com