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

Javascript 为什么异步函数返回值的承诺而不是直接返回值?,javascript,ecmascript-6,Javascript,Ecmascript 6,我现在了解到异步函数返回值的承诺,而不是直接返回值。但我不明白的是,首先这么做有什么意义。据我所知,异步函数用于同步其中的代码,现在在异步函数中使用await语句从承诺中获得值之后,我们为什么要返回另一个承诺?为什么不直接返回结果或返回void?因为您不知道异步调用何时完成。因此,它只是返回一个承诺,允许您使用异步调用创建rest逻辑,方法是创建然后-s链。,因为您不知道异步调用何时完成。因此,它只是返回一个承诺,允许您通过创建然后创建-s链,使用异步调用创建rest逻辑 异步函数用于同步其中的

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

因为您不知道异步调用何时完成。因此,它只是返回一个承诺,允许您使用异步调用创建rest逻辑,方法是创建
然后
-s链。

,因为您不知道异步调用何时完成。因此,它只是返回一个承诺,允许您通过创建
然后创建
-s链,使用异步调用创建rest逻辑

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

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

无法从异步函数同步返回结果

如果结果应该从
async
函数返回,则应该调用它并在另一个
async
函数中等待它,依此类推-可能一直到应用程序入口点

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

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

无法从异步函数同步返回结果


如果结果应该从
async
函数返回,则应该调用它,并在另一个
async
函数中等待它,依此类推-可能一直到应用程序入口点。

是的,
async函数
用于对它们内部的代码进行排序。它们不会-不能-停止它们之外的代码执行。您可能还记得,阻塞是不好的。当然,你不可能从未来得到结果,但你也不想为了等待函数完成而停止这个世界。这就是为什么当你调用这样一个函数时,你会得到一个承诺,你要么等待,要么可以在等待时安排回调并做其他事情。

是的,
异步函数
用于将它们内部的代码顺序化。它们不会-不能-停止它们之外的代码执行。您可能还记得,阻塞是不好的。当然,你不可能从未来得到结果,但你也不想为了等待函数完成而停止这个世界。这就是为什么当你调用这样一个函数时,你会得到一个承诺,你要么等待,要么可以在等待时安排回调并做其他事情。

谢谢,但是调用异步函数不会停止调用函数中的所有后续代码吗?乍一看是真的。但实际上不是。
async/await
只是把你的代码包装在引擎盖下的承诺中,让它们成为
然后
函数链。这只是语言中的一个糖分谢谢,我现在更困惑了,tbh,我将用它来做更多的实验来理解它。我只是不明白说明符“async”现在的意义是什么。如果没有用,我们为什么不直接用等待声明呢?我认为,如果异步说明符是使用异步声明的,那么解释器会使用异步说明符来停止调用函数中调用函数中的所有后续代码。但它将再次为您创建一个承诺,即
,然后
。您的代码将分为一些部分,在一个部分中,当您使用async/await时,该部分将暂停,而不是全部暂停。将不会有一个单一的流,而是许多流。在一个流中,等待之后的语句将被暂停。谢谢,但是调用异步函数不会停止调用函数中的所有后续代码吗?乍一看是真的。但实际上不是。
async/await
只是把你的代码包装在引擎盖下的承诺中,让它们成为
然后
函数链。这只是语言中的一个糖分谢谢,我现在更困惑了,tbh,我将用它来做更多的实验来理解它。我只是不明白说明符“async”现在的意义是什么。如果没有用,我们为什么不直接用等待声明呢?我认为,如果异步说明符是使用异步声明的,那么解释器会使用异步说明符来停止调用函数中调用函数中的所有后续代码。但它将再次为您创建一个承诺,即
,然后
。您的代码将分为一些部分,在一个部分中,当您使用async/await时,该部分将暂停,而不是全部暂停。将不会有一个单一的流,而是许多流。在一个流中,等待之后的语句将暂停。