我有三个函数,每个函数执行一个SQL查询并返回一个数据数组。我知道这部分是有效的,因为我可以在返回数组之前做一个json.stringify,它可以按预期工作。问题是我需要等到这三个功能完成后再对它们进行更多处理。
我使用的每个函数都具有相同的调用结构:
this.foo.makeFullJSON().then((fooStorage) => {
fooJSON = '{foo:[' + JSON.stringify(fooStorage) + ']}';
});
我知道我应该有一个promise数组,然后将promise推给它,然后使用Promise.all(),但是我真的不知道我实际上必须在代码的哪一部分上执行此操作。
编辑:清除后,我调用的每个makeFullJSON()都会返回一个promise(数组)。我需要对结果数组进行处理。
在创建承诺时将其分配给变量,然后可以将该变量传递给promise.all()。
由于我看不到您的代码的完整实现,因此这里是一个工作的精简版,它使用promise进行了工作,并使用了一些相似的名称进行了模拟。
function makeFullJSON(time) {
return new Promise((resolve, reject) => {
setTimeout(resolve, time, [time]); // send back an array for simulation
})
}
var p1 = makeFullJSON(1000);
var p2 = makeFullJSON(500);
var p3 = makeFullJSON(750);
p1.then(array => {
console.log('Promise 1 complete', array);
// Do other stuff with the return value
});
p2.then(array => {
console.log('Promise 2 complete', array);
});
p3.then(array => {
console.log('Promise 3 complete', array);
});
Promise
.all([p1, p2, p3])
.then(arrayOfAllResolvedValues => {
// This array will contain values; the values from the
// resolved promises in order of adding them to the promises array
console.log('Array of resolved values:', arrayOfAllResolvedValues);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句