Javascript Async / Await 完成任务,最后做其他事情
Javascript Async / Await get tasks done and finally do something else
我需要让一堆函数完成一些任务,并在最终函数中对结果做一些处理。
我在考虑使用异步/等待?
async function dosomething() {
// do stuff
// await till finished then grab the result
}
async function dosomethingelse() {
// do stuff
// await till finished then grab the result
}
function final() {
if (dosomething_result) {
// do something
}
etc...
}
所以基本上 final()
不会 运行 直到 dosomething 和 dosomethingelse 完成。
我希望我已经正确解释了自己。
我的问题是...如果 Async / Await 是我的意思,我将如何做到这一点。
请记住,当您声明一个函数 async
时,幕后真正发生的是该函数将 return 变成 Promise
,并且 return 函数的值将是 Promise
解析为的值。
由于函数 return 是一个 Promise
,您可以使用该事实来链接调用。
例如,如果您想要完全顺序执行,您可以这样做:
dosomething().then(dosomethingelse).then(final)
如果你想并行执行dosomething
和dosomethingelse
,等待两者都完成,然后才执行final
,你可以这样做:
Promise.all([dosomething(), dosomethingelse()]).then(final)
只是一个承诺,仅此而已。要了解更多有关您可以做什么的信息,最好的办法可能是深入研究 promises。
对于 CS 理论的学生和爱好者来说,学习 Monads 也可以是一个很好的额外 - 它是一个 Monad,对 promises 的操作可以看作是 monadic 操作。
我需要让一堆函数完成一些任务,并在最终函数中对结果做一些处理。
我在考虑使用异步/等待?
async function dosomething() {
// do stuff
// await till finished then grab the result
}
async function dosomethingelse() {
// do stuff
// await till finished then grab the result
}
function final() {
if (dosomething_result) {
// do something
}
etc...
}
所以基本上 final()
不会 运行 直到 dosomething 和 dosomethingelse 完成。
我希望我已经正确解释了自己。
我的问题是...如果 Async / Await 是我的意思,我将如何做到这一点。
请记住,当您声明一个函数 async
时,幕后真正发生的是该函数将 return 变成 Promise
,并且 return 函数的值将是 Promise
解析为的值。
由于函数 return 是一个 Promise
,您可以使用该事实来链接调用。
例如,如果您想要完全顺序执行,您可以这样做:
dosomething().then(dosomethingelse).then(final)
如果你想并行执行dosomething
和dosomethingelse
,等待两者都完成,然后才执行final
,你可以这样做:
Promise.all([dosomething(), dosomethingelse()]).then(final)
只是一个承诺,仅此而已。要了解更多有关您可以做什么的信息,最好的办法可能是深入研究 promises。
对于 CS 理论的学生和爱好者来说,学习 Monads 也可以是一个很好的额外 - 它是一个 Monad,对 promises 的操作可以看作是 monadic 操作。