为什么异步函数会直接返回值的承诺而不是值?

时间:2018-03-18 18:34:18

标签: javascript ecmascript-6

我现在明白异步函数会直接返回值的承诺而不是值。但我不明白的是,首先要做的是什么。据我所知,异步函数用于同步其中的代码,现在我们在使用异步函数中的await语句从promise获取值后,为什么要返回另一个promise?为什么我们不直接返回结果或返回void?

3 个答案:

答案 0 :(得分:2)

  

异步函数用于同步其中的代码

他们不是。 async函数为promises提供语法糖,从而消除了使用回调的需要。 async函数的行为与返回promise的常规函数​​完全相同。

如何从异步函数同步返回结果。

如果应该从async函数返回结果,则应在另一个await函数内调用async,依此类推 - 可能最多到应用程序入口点。

答案 1 :(得分:1)

因为您无法知道异步调用何时完成。所以它只返回一个承诺,让你通过建立then - s链来使用异步调用来创建休息逻辑。

答案 2 :(得分:1)

是的,async function用于序列化内部代码。他们没有 - 不能 - 停止在他们之外的代码执行。您可能还记得,阻止不好。当然,你无法从未来得到结果,但是你不想仅仅等待那个功能完成就停止这个世界。这就是为什么当你调用这样一个函数时,你会得到一个await的承诺,或者可以在等待时安排回调和做其他事情。

相关问题