2015-06-18 39 views
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) 
}) 

回答

0

您可以設置concurrency級別,這是特定於藍鳥。

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

這將一次發出所有的承諾。

相關問題