0
我正在与嵌套的诺言循环搏斗,并且无法找到工作解决方案。承诺循环嵌套数组
我环顾四周,发现这一点:https://stackoverflow.com/a/29396005/3560729
的promiseWhile功能似乎有什么,我需要,但我遇到了麻烦嵌套返回到外环
promiseWhile:
function promiseWhile(predicate, action) {
function loop() {
if (!predicate()) return;
return Promise.resolve(action()).then(loop);
}
return Promise.resolve().then(loop);
}
嵌套循环:
let outerArray = outerArrayOfObjects;
let returnArray = [];
let returnArrayIndex = 0;
let outerIndex = 0;
let outerLength = outerArray.length;
let passObject = { };
promiseWhile(function() {
return outerIndex < outerLength;
}, function() {
let innerIndex = 0;
let innerLength = outerArray[outerIndex].innerArray.length;
passObject = {
innerObject: outerArray[outerIndex].innerArray[innerIndex],
returnArray: returnArray,
returnArrayIndex: returnArrayIndex
};
promiseWhile(function() {
return innerIndex < innerLength;
}, function() {
return new Promise(function(resolve, reject){
Promise.all([
promiseFunction1(innerObject),
promiseFunction2(innerObject),
promiseFunction3(innerObject),
])
.then(function (allMappings) {
passObject.returnArray[returnArrayIndex++] = {
"result1": allMappings[0],
"result2": allMappings[1],
"result3": allMappings[2]
}
offersIndex++;
return resolve(passObject)
})
.catch(function (err) {
offersIndex++;
return reject(err);
})
})
})
outerIndex++;
}).then(function() {
return resolve(passObject);
});
})
}
我认为我的主要问题是:我在哪里处理结果?我应该如何传递这样的值,以便返回数组构建正确?
你能总结一下,也许你想更广泛地完成什么?看起来你有一个数组的数组,并且你想遍历每一个元素并在每个元素上调用3个异步函数,然后将这3个异步调用的结果存储在一个新的数组中(数组?)...是那里发生了什么?另外:处理的顺序是否重要?你需要知道整个过程何时完成? –
我有一个包含对象数组的对象,其中一个是我需要循环并执行一组promise函数的数组。我最终以一种完全不同的方式使用蓝鸟,我会发布答案 – GForce