生成器 yield next

介绍

生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同

function * gen{
  yiwld '一只没有耳朵';
    
  yiwld'一只没有尾巴'
}

 

生成器函数其实就是一个特殊的函数  异步编程

之前的都是纯回调函数进行异步

创建这个函数的方法

function * gen(){

}

function 后面加一个 星 号

声明 调用 

yield是生成器函数代码的分隔符

使用next来执行输出,但只输出第一位

复制代码
        function *gen(){
            console.log(11);
            yield;
            console.log(22);
            yield;
            console.log(33);
            yield;
            console.log(44);
        }
        let a =gen()
        // 使用next来执行输出,但只输出第一位
        a.next()
        a.next()
        // a.next()
        // a.next()
        
复制代码

这里只写了两个next所有只输出前两个

 

 

 参数传递

复制代码
function *ga(g){
            console.log(g);
            let one = yield 111;
            console.log(one);
            let tow = yield 222;
            console.log(tow);
            let three = yield 333;
            console.log(three);
        }
        let b =ga('aaa');
        console.log(b.next());
        console.log(b.next('bbb'));
        console.log(b.next('ccc'));
        console.log(b.next('ddd'));
复制代码

 

生成器函数声明与传递

这样不会回调地狱

复制代码
function one (){
            setTimeout(()=>{
                console.log(111);
                azz.next();
            },1000)
        }
        function tow (){
            setTimeout(()=>{
                console.log(222);
                azz.next();
            },2000)
        }
        function three (){
            setTimeout(()=>{
                console.log(333);
                azz.next();
            },3000)
        }
        function*gen (){
            yield one();
            yield tow();
            yield three();
        }
        let azz=gen()
        azz.next();
复制代码

 

posted @   罗砂  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示