提问者:小点点

Javascript Async/Await完成任务,最后执行其他任务[重复]


我需要有一堆函数完成一些任务,并在一个最终函数做一些与结果。

我在考虑使用async/await?

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...
}

所以基本上在dosomething和dosomethingelse完成之前不会运行。

我希望我已经解释清楚了。

我的问题是。。。我该如何使用Async/Await来实现,如果这是我的意思。


共1个答案

匿名用户

请记住,当您声明一个函数时,真正在幕后发生的事情就是该函数将返回一个,并且该函数的返回值将是解析得到的值。

由于该函数返回一个,因此可以使用该事实来链接调用。

例如,如果您想要一个完全顺序的执行,您可以执行以下操作:

dosomething().then(dosomethingelse).then(final)

如果要并行化的执行,等待两者完成,然后才执行,可以执行如下操作:

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

只是一个承诺而已。要想更多地了解你能做什么,最好的办法可能就是深入地去做承诺。

对于CS理论的学生和爱好者来说,研究单子也是一个很好的补充--它是单子,对承诺的操作可以被看作是单子操作。