[英]NodeJs, Promises not waiting
我有這個功能,應該對一個網頁發出300個請求(用於基准測試),但是Promise.all在輸出空數組之前沒有等待這些請求完成,有什么想法嗎?
function requestLoop(){
var resultSet= [];
// options.requests = 300
// options.url = http://localhost/
for(var c=1;c<=options.requests; c++){
http.get(options.url, function(res){
// resultSet.push( { request: c, statusCode: res.statusCode});
resultSet.push(new Promise(function(res){ return { request: c, statusCode: res.statusCode}; }));
});
}
Promise.all(resultSet).then(function(){
console.log(resultSet);
});
return;
}
Promise是bluebird,而http是正常的http包
Promise正在回調中推入數組。 因此,到Promise.all
調用時,array為空( []
)
在循環本身而不是callback
中將new Promise
推new Promise
數組中
function requestLoop() {
var resultSet = [];
for (var c = 1; c <= options.requests; c++) {
(function(c) {
resultSet.push(new Promise(function(resolve) {
http.get(options.url, function(res) {
resolve({
request: c,
statusCode: res.statusCode
});
});
}));
})(c);
}
Promise.all(resultSet).then(function() {
console.log(resultSet);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.