如果我要等待函数,为什么只需要在异步函数中完成?
如果我有这个:
Function myFunc() {
return await myOtherFunc();
}
我收到一条错误消息:“ await表达式仅在异步函数中允许。”
我可以理解myOtherFunc()是否必须是异步的(等待异步函数没有意义),但是为什么它关心调用函数是否异步。由于调用了异步函数,您可以在同步函数内的进程中创建派生,对吗?那么,为什么您不能在同步功能中等待呢?
注意:我的问题不是Javascript Await/Async Feature - What if you do not have the await word in the function?的重复。
^该问题询问如果异步函数中未使用await会发生什么。我在问为什么功能必须异步才能使用await。我对下面的DougBug的回答解释了为什么它们不同。
答案 0 :(得分:1)
以下文章中的图片可能会对您有所帮助。
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/index
尽管,基本思想是,async
关键字允许函数将其执行直到调用函数。
因此,实现await的任何函数都必须标记为async,以便它可以遍历备份路径,直到第一个调用者仅在等待它完成所需的操作之前。