对于承诺的循环

时间:2016-05-26 14:47:08

标签: javascript node.js

我正在运行一个for循环,它调用一个执行GET请求的函数

for (var i = 0; i < uids.length; i++) {

makeRequest(uids[i]);

}

function makeRequest(hostname) {

  request({
    url: url,
    json: true
    }, function(error, response, body) {
    if (!error && response.statusCode === 200) {
    //display the data etc
    }
    }

}

在每个请求完成并完成后,for循环是否可以仅进行迭代。例如,一旦GET请求完成并返回结果?

我考虑过实施一些超时,但我不确定这是否是最佳解决方案。

2 个答案:

答案 0 :(得分:0)

让它递归,直到剩下物品:

var itemsLeft = uids.length;

function makeRequest(hostname) {
   request({
      url: url,
      json: true
   }, function(error, response, body) {
     if (!error && response.statusCode === 200) {
        if( itemsLeft !== 0 ) { 
           makeRequest( hostname );
           itemsLeft -= 1;
        } 
     }
   })
}

答案 1 :(得分:0)

可以建议查看https://github.com/FuturesJS/forEachAsync之类的内容。检查their example以了解如何使用该库。