我正在使用 Node.js,并且有一个如下所示的循环:
var request = require('request');
for(var i = 0; i< some_number; i++){
console.log(i);
request( url.concat(i), function(error, response, body){
if(!error){console.log("ABC" + i)}
else{
console.log(error);
});
}
并且在运行request
之前它会返回0
到some_number-1
,我不确定发生了什么。我正在使用request module .
最佳答案
当你发出请求时,需要时间才能返回,但循环不会等待它,它会一直持续下去。这种异步特性是 Javascript 的主要原则之一。
如果您想在继续循环之前等待每个请求,可以尝试如下操作:
function iterator(i) {
if (i < some_number) {
request(url.concat(i), function(err, response, body) {
if (err) console.log(err);
iterator(i + 1);
});
}
}
// Kick off the loop
iterator(0);
关于Javascript 只运行一半的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490115/