Javascript 在循环中调用Bluebird Promise函数

Javascript 在循环中调用Bluebird Promise函数,javascript,node.js,bluebird,Javascript,Node.js,Bluebird,我对承诺一无所知。我不知道如何在bluebird promises中编写此代码。有人能用承诺来解释这应该是什么样子吗 for (var i = 10; i >= 0; i--) { var path = '127.0.0.1/getdata/' + i; http.get({ path: path, }, (res) => { var data = res.resume();

我对承诺一无所知。我不知道如何在bluebird promises中编写此代码。有人能用承诺来解释这应该是什么样子吗

for (var i = 10; i >= 0; i--) {

        var path = '127.0.0.1/getdata/' + i;

        http.get({
            path: path,
        }, (res) => {
          var data = res.resume();
        });
}
谢谢你所做的一切

function makeRequest() {
    var items = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
    return Promise.map(items, function(item) {
        console.log(item);
        return get('/echo/html/');
    });
}
makeRequest().then(function(results) {
    console.log(results);
});


这种方法是使用Bluebird的

如果您只想收集10个相互不依赖的请求的结果,那么您可以并行启动它们,让Promissions为您收集结果。既然您提到了Bluebird,您可以让Bluebird制作http方法的预期版本:

var Promise = require('bluebird');
var request = Promise.promisifyAll(require('request'), {multiArgs: true});

var promises = [];
for (var i = 10; i >= 0; i--) {
    var path = '127.0.0.1/getdata/' + i;
    promises.push(request.getAsync(path).spread(function(response, body) {
        return body;
    }));
}
Promise.all(promises).then(function(results) {
    // array of results here
}, function(err) {
    // error here
});

您是在尝试并行运行请求并在最后按顺序收集所有结果,还是在尝试逐个运行它们?你的目标是什么?当我们问你澄清问题时,你应该回答。当你不清楚重要的细节时,唯一可能的答案就是猜测。当人们问你问题时,请回答。我的目标是将所有网站的数据保存到变量。谢谢,这很有效。如果我得到它,Promise.map就是函数的Promise循环?CheersPromise.map与Promise.all(原生和蓝鸟)非常相似,但是Promise.map提供了额外的选项,特别是并发。我在b/c中演示了这项技术,它是蓝鸟特有的(Promise.all可以在native中找到),但也是b/c