gpt4 book ai didi

node.js - For循环在nodejs中不能正常工作

转载 作者:搜寻专家 更新时间:2023-11-01 00:24:30 26 4
gpt4 key购买 nike

我在 for 循环中使用 diffbot api

这是我的代码

for (var i = 0; i< 200; i++){
/* pass url from diffbot */
console.log("Ready to send Url for parsing to Diffbot ");

diffbot.article({ uri: url }, function(err, response) {
if (!err) {
console.log(i);
} else {
console.log("Error Occur in url " + i + "and error is " + err);
/* need to Add logic for parsing */
}
});
}

现在我得到控制台消息,如

output is coming 

200
200
200
200
200

两百次。

输出预期为 0 到 199

有没有人告诉我哪里错了

谢谢

最佳答案

发生的事情很简单:

您的循环产生了 200 个帖子。每个帖子的响应都是异步执行的,这意味着所有帖子都可以在第一个响应到达时完成,执行回调函数。因此,到那时 i==200

在您的评论后详细说明:

如 fzzle 的回答所述,您需要一个闭包来在您收到响应时保持 i 的当前值:

 diffbot.article({ uri: url }, (function(i) { 
return function(err, response) {
... }
})(i));

function(i){ ... } 中包含您的回调函数会创建闭包。这样,i 的当前值被传递给函数,然后可用于使用您想要的值进行响应,只要此响应返回。

关于node.js - For循环在nodejs中不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26670602/

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