我正在使用NodeJS後端服務,並使用promise來加載任何數據。現在,我想對來自不同來源的項目進行組合(數組)。我有以下解決方案,但我不認爲這是解決此類問題的正確方法。在循環(節點)中使用promises
var results = [];
loop(items, index, data, results).then(function() {
console.log(results);
});
function loop(items, index, data, results) {
return utils.getPromise(function(resolve, reject) {
if (index === items.length) {
// Stop
resolve();
} else {
doAction(items[index], data).then(function(result) {
if (result) {
mergeResults(results, result)
} else {
loop(items, index + 1, data, results).then(resolve, reject);
}
}, reject);
}
});
}
function doAction(item, data) {
return utils.getPromise(function(resolve, reject) {
item.doIt(data).then(resolve, reject);
});
}
我認爲正確的方法是立即返回一個承諾,並在飛行中添加的結果,但我不知道究竟如何做到這一點。有什麼建議麼?