如何确保请求按顺序完成?
how to ensure request is done sequentially?
我想一个接一个地请求,下面的代码好像是同时请求所有的页面,请问有没有办法在上一个页面完成后再获取一个页面?谢谢
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)
})
您可以设置concurrency级别,这是bluebird特有的。
Promise.map(URLS, function (item) {
return request.postAsync({url: item}).spread(function (response,body) {
var items = JSON.parse(body)
return items
}, { concurrency: 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)
})
您可以设置concurrency级别,这是bluebird特有的。
Promise.map(URLS, function (item) {
return request.postAsync({url: item}).spread(function (response,body) {
var items = JSON.parse(body)
return items
}, { concurrency: 1})
这将一次发出所有承诺。