在循环中调用 Bluebird Promise 函数
Call Bluebird Promise function in loop
我是新手。我不确定如何在 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 的 Promise.map
如果您只想收集 10 个不依赖于彼此的请求的结果,那么您可以并行启动它们并让 promises 为您收集结果。既然你提到了 Bluebird,你可以让 Bluebird 制作 http 方法的 promisified 版本:
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
});
我是新手。我不确定如何在 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 的 Promise.map
如果您只想收集 10 个不依赖于彼此的请求的结果,那么您可以并行启动它们并让 promises 为您收集结果。既然你提到了 Bluebird,你可以让 Bluebird 制作 http 方法的 promisified 版本:
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
});