大家好,我希望你们做的很好,并对这个愚蠢的问题感到抱歉,我只是想知道异步/等待是否允许其他任务运行?
我刚刚阅读了MDN上的downside of async await,其中有一部分说“它的确允许其他任务同时继续运行,但是您自己的代码被阻止了”。那是什么意思?并且只有异步/等待才能允许其他任务运行还是诺言也可以做到?如果可以,请给我一些例子吗?预先谢谢你:)
答案 0 :(得分:3)
当函数点击await
语句时,它将在右侧运行代码以获取承诺,然后进入睡眠状态。
其他功能可以在此同时运行,但是直到承诺解决为止,此功能中的任何其他行都将无法运行。
这不是缺点。这就是要点。
async function example() {
const result = await somethingFromAPromise();
do_something_with(result);
}
如果它没有停止,那么您将没有result
下一行要做的事情。
该文档部分在很长的一段话中说的是,有时您会遇到如下情况:
async function example() {
const result1 = await somethingFromAPromise();
const result2 = await somethingFromAnotherPromise();
do_something_with(resul1, result2);
}
...,您有两个保证可以并行运行,因为它们是完全独立的,但是您要等到第一个完成时才开始第二个保证。
它还告诉您如何缓解这种情况
async function example() {
const result1Promise = somethingFromAPromise();
const result2Promise = somethingFromAnotherPromise();
const [result1, result2] = await Promise.all(result1Promise, result2Promise);
do_something_with(resul1, result2);
}