Javascript 异步等待承诺。全部使用链
我有几个promise函数,我想做一个promise.all on和async wait。然而,我不知道如何做到这一点时,有一个'然后'链在其中之一 比如说Javascript 异步等待承诺。全部使用链,javascript,asynchronous,Javascript,Asynchronous,我有几个promise函数,我想做一个promise.all on和async wait。然而,我不知道如何做到这一点时,有一个'然后'链在其中之一 比如说 Promise.all([ promiseFn1(), promiseFn2().then(promiseFn3) ]) 当promiseFn2()链接在Promise.all中时,如何实现异步等待 我正在考虑制作一个令人烦恼的函数,但不希望: await Promise.all([ promise1.fn(),
Promise.all([
promiseFn1(),
promiseFn2().then(promiseFn3)
])
当promiseFn2()
链接在Promise.all中时,如何实现异步等待
我正在考虑制作一个令人烦恼的函数,但不希望:
await Promise.all([
promise1.fn(),
(() =>{
p2response = await promise2Fn();
return promise3Fn(p2response);
})()
])
是的,立即执行的async
函数表达式可以执行以下操作:
await Promise.all([
promise1.fn(),
(async () => promise3Fn(await promise2Fn()) )()
])
但是,我建议继续使用更简单的.then()
调用。它不像任何东西强迫你到处使用wait
或者,如果您正在寻找干净的代码(并且然后
链不像示例中那样简单,而是涉及函数表达式),只需使用命名的帮助函数:
async function promise2and3fn() {
return promise3Fn(await promise2Fn());
}
await Promise.all([
promise1.fn(),
promise2and3fn()
])
当您想同时使用wait
时,无法绕过这些额外的函数,因为函数内部的执行始终是连续的。是的,立即执行的异步
函数表达式可以做到这一点:
await Promise.all([
promise1.fn(),
(async () => promise3Fn(await promise2Fn()) )()
])
但是,我建议继续使用更简单的.then()
调用。它不像任何东西强迫你到处使用wait
或者,如果您正在寻找干净的代码(并且然后
链不像示例中那样简单,而是涉及函数表达式),只需使用命名的帮助函数:
async function promise2and3fn() {
return promise3Fn(await promise2Fn());
}
await Promise.all([
promise1.fn(),
promise2and3fn()
])
当您想同时使用wait
时,没有办法绕过这些额外的函数,因为函数内部的执行总是顺序的。承诺。所有([promiseFn1(),promiseFn3(wait promiseFn2())])
?将promiseFn3()
移到then()
内部promiseFn2()
@PatrickRoberts no,@Bergi这与第一个例子完全相同,不必如此迂腐。@PatrickRoberts我想迂腐是必要的,因为promiseFn3(wait promiseFn2())
的行为与promiseFn2()不同。然后(promiseFn3)
。考虑“<代码>约定”(<代码)>拒绝-这是一个微妙但重要的区别。<(CopyFeNF1(,),OpNoFeNF2())(<代码> > CopeNFN3)(<代码> > <代码> > /代码>内部>代码> CurrFunn2()/@ PATRIKRiBrts不,@ Bergi,与第一个示例完全一样,没有必要这么迂腐。@PatrickRoberts我想迂腐是必要的,因为promiseFn3(wait promiseFn2())
的行为与promiseFn2()不同。然后(promiseFn3)
。考虑一下<代码>允诺(<)/代码>拒绝-这是一个微妙但重要的区别。我同意,<代码>。()(代码)>调用比其他的非易读性要容易得多。我的例子极大地简化了允诺2和3,因此我想知道是否有一种干净的方式来写它。可能需要将其命名为函数。我同意,.then()
调用比其他废话更容易阅读。我的示例大大简化了promise2和promise2,因此我想知道是否有一种干净的方法来编写它。可能需要将其命名为函数。泰