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)

如果你想并行执行dosomethingdosomethingelse,等待两者都完成,然后才执行final,你可以这样做:

Promise.all([dosomething(), dosomethingelse()]).then(final)

只是一个承诺,仅此而已。要了解更多有关您可以做什么的信息,最好的办法可能是深入研究 promises。

对于 CS 理论的学生和爱好者来说,学习 Monads 也可以是一个很好的额外 - 它是一个 Monad,对 promises 的操作可以看作是 monadic 操作。