async/await 底层当然用 promise,这我知道。。但那是 babel 的脏活,跟程序员没关系。里面当然维护一个 context, 但程序员看不到。搭配 const/let/var 语义清晰很多。总之呢,async/await 是 js 的新语法,你们不要太排斥啊。
如果想要实现同样的功能,这个维护 context 的工作就得让程序员自己来做了。
state 变量只是一个例子,不要深究它的使用场景。上面的演示应该足够让你清楚回调函数与 await 的区别了吧。
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 这是两种解决问题的方式, 非要用全局的scope, 在流式处理中实现, 肯定也可以, 无非是把context显式传递, 或者通过闭包传递上下文.
: async await翻译成es5的代码基本就是刚才的promise写法, 本身语义上是一致的, 在await/async 之后创建的变量实际上并不是产生在上一层的context里, 而是在await/async 又产生了一个新的context, 后面的所有代码都在新的context中
: 而且你这个state如果要想全局用, 肯定是要在前面声明的, 如果是在后面用, 那就是在新的context中使用, 并不是全局的.
: ...................
--
FROM 110.85.22.*