ES6中generator函数对ajax请求的控制

本文探讨了如何利用Generator函数和yield关键字实现Ajax请求的顺序执行。通过具体代码示例,展示了如何确保Ajax请求按顺序进行,且前一请求的结果能作为下一请求的输入,保持了代码的可读性和执行的严谨性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

generator函数写法为

function* fun(){
     yield step1;
     yield step2;
     yield step3;
}

该函数关键字为function*,yield  ,yield相当于return语句。该函数为执行-中断-执行,只有执行fun.next()才会执行下一步;这样一种“机制”可以帮我们控制有关系嵌套的ajax请求

之前我们的情景为两个毫无相关的ajax请求完成才采取下一步动作,使用的是Promise.all();那这个使用情景可能有所不同。

情景:先有三个ajax请求,必须按照严格顺序执行,第一个ajax返回值需要传递给第二个ajax请求中,第二个请求返回值需要传递给第三个ajax请求中。三个ajax请求存在层层嵌套关系。需要怎么做才可以做到执行顺序的严谨性,还要有良好的可读性

代码如下:

 <script>
        function ajax(url) {
            // 当请求执行完了之后,执行到then之后,又执行到了next();进行下一步请求
            axios.get(url).then(res=>consrdata.next(res.data))
        }
        function* step() {
            const users = yield ajax('https://api.github.com/users');
            const fisterUser = yield 
                  ajax(`https://api.github.com/users/${users[0].login}`);
            const flolowers = yield ajax(fisterUser.flolowers_url)
        }
        var consrdata=step();
        consrdata.next();//开始执行第一步
    </script>

这样就可以严谨执行顺序,还可读性比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值