0

次のページを次々とリクエストしたいのですが、次のコードはすべてのページを同時にリクエストしているようです。前のページが完了した後に 1 つのページを取得する方法はありますか? ありがとう

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})

これにより、すべての promise が一度に 1 つずつ発行されます。

于 2015-06-18T11:20:58.093 に答える