generator和yield

发布时间 2023-03-27 12:34:01作者: 北极熊的菜

刚才看文档翻到了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