Generator 与 Promise 一起使用 简单实现 await
function* bar() { const result = yield new Promise((resolve, reject) => { setTimeout(() => { resolve('Hello Generator'); }, 3000); }); console.log(result); } var it = bar(); it.next().value.then(res => { // 将获取到到 promise 值再传到 generator 内 // result就能接收到 异步的值 简单实现了异步函数同步编写的效果 it.next(res) })
如果对上面不是很理解可以看看下面简单的代码
function* gn() { var gitem = yield 4; console.log(gitem) } var git = gn() git.next(); // 执行下面next 就会打印出 9 了 // 其实第二次将 9 是赋值到 gitem 变量上 然后再接着执行下面的语句 git.next(9);