Genretor篇
运用场景
(1) 一个抽奖的小栗子
1 | function draw(count) { |
(2)长轮询
实现实时把服务器数据更新到客户端
1 | // 模拟一个请求 |
(3) 部署ajax
, 实现同步
异步函数的同步表达
1 | function* main() { |
(4) 部署iterator接口
1 | const o1 = { |
自动执行
Thunk
函数
1 | // 编译器实现"传名调用" |
JavaScript
的 Thunk
函数
JavaScript采取的是传值调用, thunk函数含义有所不同
1 | // 简单实现 |
生产环境的Thunk转换器
1 | // 安装 |
用Thunk
实现自动执行
1 | // 栗子 |
1 | function run(fn) { |
初看上面代码会懵逼的
1 | // 先理解手动执行 |
async篇
ES2017标准,Generator 函数的语法糖,自带执行器
运用场景
(1) 一个请求接着一个请求
1 | // 后一个请求依赖前一个请求 |
(2) 并发任务, 但是同步处理结果(处理任务是异步)
1 | async function fn2() { |
(3)多张图片,处理一张保存一张,然后才能处理下一张
1 | // 无await, 就自己瞎写 |
(4)错误处理
1 | // 无await |
(5)超时处理
1 | function timeout(delay) { |
(6)并发限制
1 | async function getImages(urls, limit) { |
这里补充一下基础知识
1 | (async () => { |