我有一個包含用戶信息的對象數組。(節點)運行n次的動態承諾
var names=[{name: 'yoda',
address:'123 Compton',
email:'[email protected]'},
{name: 'darth vader',
address:'69 harlem',
email:'[email protected]'},{....}]
這是一個列表,範圍可以從100到1000個用戶。 問題是我需要從網絡和數據庫請求/提取關於每個用戶的信息,並創建一個包含每個用戶更多詳細信息的新數組。這將是3個來源。現在每次拉動需要10毫秒到1分鐘。 這是我跳轉到承諾。 (「本地承諾」),例如:
require("native-promise-only");
function getFile(file) {
return new Promise(function(resolve){
fakeAjax(file,resolve);
});
}
//Recursive call
function recursivePromise(originalArray, newArray){
if(isEmpty(originalArray)){
store(newArray);
display(newArray);
}
else{
var currentItem = originalArray[0];
var p1 = getFile(currentItem.name);
var p2 = getFile(currentItem.address);
var p3 = getFile(currentItem.email);
var newDataItem={};
p1.then(function(msg){
//TODO check status
newDataItem.nameinfo= msg;
return p2;
})
.then(function(msg){
//TODO check status
newDataItem.addressinfo= msg
return p3;
})
.then(function(msg){
newDataItem.emailinfo= msg
newArray.add(newDataItem);
recursivePromise(originalArray.shift(), newArray)
});
}
}
var new_array=[];
recursivePromise(names, new_array);
這是一個粗略的代碼,我有類似的東西,它的工作原理!有些。但是我的一個錯誤告訴我,我可能會設置一個未來的失敗。我正在遞歸地做這件事,因爲這個項目在'名字'中的位置很重要。所以他們需要按順序處理。
什麼是'水果'?你爲什麼要「轉移」它?數組上的'.add()'是什麼? – Bergi
您是否想要串行運行請求(在第一個完成之前不要啓動第二個請求)還是希望並行運行它們(最多一次請求X個請求)? – jfriend00