我有一個關於nodejs中的異步包的問題。異步for each問題與多個xmlhttprequests
本質上,我有一個對象數組,其中每個元素包含我需要形成一個xmlhttprequest到遠程服務器的信息。所以我想我可以使用async.forEach按順序觸發請求,將結果存儲在一個變量中,然後在我的代碼中使用它們。
下面是示例代碼:
async.series([
function(callback)
{ //async.series element 1
async.forEach(req_info_arr, function(req_info_element, callback) {
var url = ... //form the url using the info from req_info_element
var req = new XMLHttpRequest();
req.open("GET", url, true);
req.send(); //fires the request
req.onload = function() {
//do stuff
callback();
}//end of onload
req.onerror = function() {
//do stuff
callback(err);
}
}/*end of async_forEach */, callback);
callback();
},
function(callback){
//async.series element 2
//do stuff...want this to be done only after we have received a response for every request fired in async.series element 1
}
], function(err) {
});
什麼情況是這樣的:async.forEach越過每個元素在req_info_arr,觸發每個元素的請求。
一旦完成。這到達了async.series中的第二個元素。但是我還沒有收到對xhr在async.series元素1中的響應,所以我的代碼失敗了。
有沒有解決這個問題的方法?我誤解了任何東西嗎?
任何幫助/指針表示讚賞。
謝謝,這有幫助。 – 2014-09-29 18:21:26