Javascript 只运行一半的循环

标签 javascript node.js closures

我正在使用 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之前它会返回0some_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/

相关文章:

javascript - 如何在 react 中对多个数组进行过滤

node.js - 在 electron + react 应用程序中执行 child_process

node.js - 加速 AngularJs 项目的 Travis-CI 依赖项安装

swift - 如何在单个函数中执行两个完成 block 并将完成 block 的数据传递给下一个 View Controller ?

python - 关闭不传递值。 python 3

javascript - 交叉口观察者未观察特定的分区/部分

Javascript - 交换 div 位置

javascript - 执行一致性和性能的原型(prototype)或闭包?

javascript - 在范围 slider javascript 内切换大小写

node.js - setTimeout 在长时间运行的函数中引入延迟