为什么功能必须异步才能在其中使用await?

时间:2018-11-09 19:53:57

标签: asynchronous async-await

如果我要等待函数,为什么只需要在异步函数中完成?

如果我有这个:

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的回答解释了为什么它们不同。

1 个答案:

答案 0 :(得分:1)

以下文章中的图片可能会对您有所帮助。

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/index

尽管,基本思想是,async关键字允许函数将其执行直到调用函数。

因此,实现await的任何函数都必须标记为async,以便它可以遍历备份路径,直到第一个调用者仅在等待它完成所需的操作之前。