刚才看文档翻到了async和await,然后就看到了这个,看了好久了现在终于明白一点了
generator(生成器) yield返回值,使生成器函数执行暂停;
用 function*
定义的函数称之为生成器函数,返回一个不能直接使用的 Generator 对象。
yield关键字实际返回一个IteratorResult(迭代器)对象,它有两个属性,value和done,分别代表返回值(yield
表达式求值的结果)和是否完成
function* a() { let list = [3, 7, 9]; for (let i = 0; i < list.length; i++) { yield list[i]; } } const aFun = a(); console.log(aFun); // a {<suspended>} console.log(aFun.next()); //{value: 3, done: false} console.log(aFun.next()); //{value: 7, done: false} console.log(aFun.next()); //{value: 9, done: false} console.log(aFun.next()); //{value: undefined, done: true}
可以用for of遍历
for (const i of aFun) { console.log('---->', i); } // ----> 3 // ----> 7 // ----> 9