cogenerator

46次阅读

共计 942 个字符,预计需要花费 3 分钟才能阅读完成。

迭代器函数的定义 迭代器中需要返回一个对象这个对象中需要有一个 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 + await

function * 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);
//     })
//   })
// })

正文完
 0