迭代器函数的定义 迭代器中需要返回一个对象这个对象中需要有一个next方法,next方法调用后,可以返回一个对象对象中有两个参数 第一个done value迭代出的结果
function * a() { let x = yield 100; console.log('x',x); let y = yield 200; console.log(y); let z = yield 300; return z}// let flag = false;// do {// let {done,value} = it.next();// console.log(value);// flag = done;// } while (!flag);
co
let fs = require('mz/fs');// let co = require('co');// generator => async + awaitfunction * read() { // 可以暂停 可以支持promise let age = yield fs.readFile('./name.txt','utf8'); let adress = yield fs.readFile(age,'utf8'); let r = yield fs.readFile(adress,'utf8'); return r;}function co(it) { return new Promise((resolve,reject)=>{ // 异步线性执行怎么实现 koa express function next(data) { let { value, done } = it.next(data); if(!done){ value.then(data=>{ next(data) }, reject); }else{ resolve(value); } } next(); })}co(read()).then(data=>{ console.log(data);},err=>{ console.log(err);});// let it = read();// it.next().value.then(data=>{// it.next(data).value.then(data=>{// it.next(data).value.then(data=>{// console.log(it.next(data).value);// })// })// })