然而,使用对象并没有严格表达这个流程。因为step1和step2是对等的。没有地方定义了step1必须在step2之前执行。更精确的表达方式是state machine:
lua version: https://tio.run/
es2017 version: https://tio.run/
其中的”next_step“是一个游标,它跟踪了执行的位置。在x86-64 CPU中,也有一个instruction pointer register名叫”RIP“,干的活和”next_step“是类似的。 Coroutine
Coroutine运作机制类似于state machine,但是写起来和function类似。表达同样的概念用的代码要精简许多。有两种风格的coroutine,一种是用”yield“(也被称为generator),一种是用”async/await“。我们先来看看”yield“如何工作的。
lua version: https://tio.run/
es2017 version: https://tio.run/