异步解决方案1.generator函数 2.Promise,3.async await(1)

<!-- 异步编程 ajax 定时器 回调里面套回调,层层嵌套,回调地狱-->

 <!-- 解决方案:1.generator函数 2.Promise,3.async await -->

//定义一个Generator函数 function * 函数名(){}

        //在Generator函数内部,通过yield关键字使函数分步执行 按照顺序执行

        //yield相当于把代码拆分成代码块,每次执行一个代码块,然后程序挂起,等待上一个程序执行完再执行下一个

        function * helloWorld(){

            console.log("1");

            yield "hello";

            console.log("2");

            yield "world";

            console.log("3");

            return "end"

        }

        var gen = helloWorld()

        console.log(gen);

        //使用next方法,分段执行Generator函数

        console.log(gen.next());//next对应定义一个yield,暂停后续操作,yield后跟着的"hello"会作为value返回 done: false说明函数还没有执行完

        console.log(gen.next());//value:"world",done:false

        console.log(gen.next());//遇到return函数执行结束,value:"end",done:ture

       

        //Generator函数是一个分段执行的过程,yield用来把函数挂起(暂停),next()恢复执行 yield和next一一对应

Generator函数例子

function a(){

            $.ajax({

                type: "get",

                url: "./code.json",

                dataType: "json",

                success: function (res) {

                    console.log(res)

                    if(res.status == 200){//当状态码为200时允许请求data.json

                        it.next();//触发第一个yield,执行函数b

                    }else{

                        console.log("请求失败");

                        return

                    }

                }

            });

        }

        function b(){

            $.ajax({

                type: "get",

                url: "./data.json",

                dataType: "json",

                success: function (res) {

                    console.log(res)

                    //渲染

                }

            });

        }

        //定义一个generator函数

        function * req(){

            yield a();

            yield b();

        }

        p.then((res)=>{

            b()

        }),(error) =>{//失败回调

            console.log(error)

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值