介绍一下ES6里的三种异步方案。
知识尝鲜
1、newGenerator 函数,它执行之后会返回一个迭代器,在这个迭代器上我们可以去调用
next()
方法;
2、next() 方法,可以给他传入一个参数。调用next()
方法,会返回一个对象{value: res,done: false}
,这里的done 表示迭代器。
方法一: Generator + Promise
1 |
|
执行器 中的 result.value
现在是一个Promise, 通过 then 方法拿到需要的结果,传下一次 next 方法,这样 let f1 = yield readFile('a.txt');
就可以拿到值.
方法二: Generator + Thunk函数
1 | const fs = require('fs') |
Thunk
转换器,把原来的 fs.readFile 函数 转换成需要两次调用的函数 ,readFile 的执行结果,可以通过回调函数能参数传递出来,再传给 next 方法
方法三:async 函数 + await 的异步处理方式
1 |
|
readFile
函数 对比方法一没有大的变化 ,Generator 函数变成 了 async 函数,可见这处方式 只是一个语法糖,async 函数自带了执行器。