🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Generator函数的异步引用 ### 传统方法 在ES6之前,异步编程的方法大概有以下4种: - 回调函数 - 事件监听 - 发布/订阅 - `Promise`对象 ### 基本概念 #### 异步 所谓异步,就是任务不是连续完成的,可以理解成任务被分解成两段,先执行第一段,然后转而执行其他任务,等第一段完成后再回过头来执行第二段。 #### 回调函数 以前对异步的处理是使用回调函数,所谓回调函数,就是把任务的第二段单独放在一个函数里,等到重新执行这个任务时直接调用这个函数,这就是 `callback`。 ```js // 读取文件 fs.readFile('/etc/passwd', 'utf-8', function (err, data) { if (err) throw err console.log(data) }) ``` #### Promise 回调函数本身没问题,问题在于多个回调会嵌套,导致代码不清晰。`Promise` 对象就是为了解决这个问题被提出的。 ### Generator函数 #### 协程 协程就是多个线程相互协作,完成异步任务。 #### 协程的Generator函数实现 #### Generator函数的数据交换和错误处理 #### 异步任务的封装 ### Thunk函数 #### 参数的求值策略 #### Thunk函数的含义 #### JavaScript语言的Thunk函数 #### Thunkify模块 #### Generator函数的流程管理 #### Thunk函数的自动流程管理 ### co模块 #### 基本用法 #### co模块的原理 #### 基于Promise对象的自动执行 #### co模块的源码 #### 处理并发的异步操作