我现在明白异步函数会直接返回值的承诺而不是值。但我不明白的是,首先要做的是什么。据我所知,异步函数用于同步其中的代码,现在我们在使用异步函数中的await语句从promise获取值后,为什么要返回另一个promise?为什么我们不直接返回结果或返回void?
答案 0 :(得分:2)
异步函数用于同步其中的代码
他们不是。 async
函数为promises提供语法糖,从而消除了使用回调的需要。 async
函数的行为与返回promise的常规函数完全相同。
如何从异步函数同步返回结果。
如果应该从async
函数返回结果,则应在另一个await
函数内调用async
,依此类推 - 可能最多到应用程序入口点。
答案 1 :(得分:1)
因为您无法知道异步调用何时完成。所以它只返回一个承诺,让你通过建立then
- s链来使用异步调用来创建休息逻辑。
答案 2 :(得分:1)
是的,async function
用于序列化内部代码。他们没有 - 不能 - 停止在他们之外的代码执行。您可能还记得,阻止不好。当然,你无法从未来得到结果,但是你不想仅仅等待那个功能完成就停止这个世界。这就是为什么当你调用这样一个函数时,你会得到一个await
的承诺,或者可以在等待时安排回调和做其他事情。