异步/等待模式和延续之间有什么关系?

我想知道async / await模式(从Scala,F#,C#等已知)和延续之间有什么关系:

  • async / await模式是全面延续的有限子集吗? (如果属实,延续性如何更具表现力?)
  • 延续只是async / await一种可能的实现技术? (如果属实,还有哪些其他实施方法?)
  • 或者是async / await和延续只是正交概念,其中唯一的共同点是它们都能够控制流/数据流的抽象?

  • 我会说这两者之间的关系是这样的: async - await是编程语言使用的一种技术,以便您可以编写看起来同步的代码(例如,没有显式的继续委托),但实际上它是异步执行的。 这是通过创建一个对象来实现的,该对象表示该函数的当前执行状态并将其注册为等待操作的继续。

    简而言之, async - await使用延续。

    async / await模式是全面延续的有限子集吗? (如果属实,延续性如何更具表现力?)

    你可以那样说。 继续是一个更普遍的概念, async - await只是用它们来实现异步。

    例如,在继续传递样式编程中,可以通过对每个操作进行两次延续来实现异常处理:一个用于成功案例,另一个用于失败案例。 这种延续的使用与async - await无关(你必须明确地写出每个延续,可能是lambda)。

    延续只是async / await一种可能的实现技术? (如果属实,还有哪些其他实施方法?)

    我会说延续的概念对于async await来说非常重要。

    async await的核心思想是立即停止执行该功能,并在稍后恢复。 为此,你需要一些可以用来恢复的对象。 这是一个延续。

    链接地址: http://www.djcxy.com/p/78515.html

    上一篇: What's the relationship between the async/await pattern and continuations?

    下一篇: What is the type of an intersected type?