0

我想请求一个又一个页面,下面的代码似乎同时请求所有页面,有没有办法在上一个页面完成后获取一个页面?谢谢

var Promise = require("bluebird");
var request = Promise.promisifyAll(require('request'));
var URLS = ["http://sample.com/j1", "http://sample.com/j2"]

Promise.map(URLS, function (item) {
    return request.postAsync({url: item}).spread(function (response,body) {
    var items = JSON.parse(body)
    return items
})
}).then(function (r) {
    console.log(r.length)
})
4

1 回答 1

0

您可以设置特定于 bluebird 的并发级别。

Promise.map(URLS, function (item) {
    return request.postAsync({url: item}).spread(function (response,body) {
    var items = JSON.parse(body)
    return items
}, { concurrency: 1})

这将一次发出所有的承诺。

于 2015-06-18T11:20:58.093 回答