1
我最近寫了很多NodeJS,這迫使我從不同的角度來攻擊一些問題。我想知道在異步請求環境中,爲了處理數據塊的順序(而不是並行)問題開發了哪些模式,但我一直無法找到任何直接相關的東西。異步但順序請求的模式
所以總結一下問題:
- 我有存儲在我需要處理數組格式的數據的列表。
- 我必須將這些數據異步發送到服務,但該服務一次只能接受幾個服務。
- 的數據必須按順序進行處理,以滿足對服務的限制,這意味着使多個並行異步請求是不允許的
在這一領域的工作,我已經拿出了最簡單的模式是遞歸的。類似於
function processData(data, start, step, callback){
if(start < data.length){
var chunk = data.split(start, step);
queryService(chunk, start, step, function(e, d){
//Assume no errors
//Could possibly do some matching between d and 'data' here to
//Update data with anything that the service may have returned
processData(data, start+step, step, callback);
});
}
else{
callback(data);
}
}
從概念上講,這應該貫穿每個項目,但它很直觀地複雜。我覺得應該有一個更簡單的方法來做到這一點。在接近這種問題時,有沒有人有他們傾向於遵循的模式?
你可以通過'async#eachSeries'避免遞歸https://github.com/caolan/async#seriestasks-callback – hassansin