Flo*_*son 0 javascript design-patterns node.js promise
我正在研究NodeJS后端服务,并使用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);
});
}
Run Code Online (Sandbox Code Playgroud)
我认为正确的方法是立即返回一个承诺,并在运行中添加结果,但我不确切知道如何做到这一点.有什么建议?
您可以使用Promise.all从承诺中收集所有结果.的.所有承诺本身然后与含有来自每个许所有的单个结果的阵列解决.
我认为正确的方法是立即回复承诺
就像你建议的那样,你只需返回承诺并从这些承诺中创建一个数组.在循环之后,您将此数组提供给Promise.all.
可能看起来像这样:
var promiseArray = [];
for(var i=0;i<array.length;i++){
promiseArray.push(doSomethingAsync(array[i]));
}
Promise.all(promiseArray).then(function(responseArray){
//do something with the results
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |