这是两种解决问题的方式, 非要用全局的scope, 在流式处理中实现, 肯定也可以, 无非是把context显式传递, 或者通过闭包传递上下文.
async await翻译成es5的代码基本就是刚才的promise写法, 本身语义上是一致的, 在await/async 之后创建的变量实际上并不是产生在上一层的context里, 而是在await/async 又产生了一个新的context, 后面的所有代码都在新的context中
而且你这个state如果要想全局用, 肯定是要在前面声明的, 如果是在后面用, 那就是在新的context中使用, 并不是全局的.
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 你要关注后面的 console.debug(state) 这个语句,这里代表着某个函数使用了 state 变量。subscribe 只是修改了 state 的值,使用 state 的一般会在其它地方。
: 那么问题就来了,因为回调没法给上层 scope 添加新变量。所以要么在上层 scope 事先定义这个变量,要么扩大 state 变量的生命周期。这就是回调函数和 async/await 最重大的区别。
--
修改:pangwa FROM 58.246.6.*
FROM 58.246.6.*