我想使用承諾來執行循環內循環。我希望內部循環應該完成它的迭代,然後外部循環應該迭代。嵌套Promise.map()不返回任何結果
例如: -
arr1 = [1,2,3,4];
arr2 = [5,6,7,8];
loopOfArr1{
loopOfArr2{
//functionality
}
}
我要爲ARR1的每個值,ARR2的循環應該得到執行。而且這兩個循環將如何完成同步。
下面是一個使用我的代碼的承諾: -
exports.getAtpagesWeights = function(atpagesDataArray,selectedTagsIds, taggings, callback){
var atpageData, forHubCount;
return Promise.map(selectedTagsIds, function(tag, index, count){
return Promise.map(taggings, function(tagging, index, count){
return new Promise(function(resolve, reject){
var atpageArray = _.filter(atpagesDataArray, function(item){
if(tagging.taggable_id == item.id && tagging.tag_id == tag){
item = item.toObject();
item.rank_weight = tagging.atpages_weight;
resolve(item);
}
})
})
})
}).then(function(result){
console.log(result);
callback(null, result);
}).catch(function(error){
callback(error, null);
})
}
但是,當我檢查日誌,正在打印什麼,誰能告訴我要去哪裏錯了,或者是還有什麼更好的辦法?
我在代碼中看不到任何異步。那麼你用什麼承諾呢?另外,承諾和回調不會很好地混合。避免混合它們。 – Tomalak
所以如果我使用forEach而不是承諾,我將如何能夠得到我的結果數組,請問您能用一個簡單的例子來支持這個嗎? –
不知道輸入是什麼,你試圖建立什麼輸出。但這裏沒有異步。忘記回調。忘記承諾。拋出所有的東西。編寫一個簡單的函數,在其參數上運行循環,計算一個值並返回該值。 – Tomalak