Generator及其使用

基本使用

1、generator(生成器)是ES6标准引入的新的数据类型。类似于一个函数,但可以返回多次值。
2、generator对象在返回值的过程中一旦发现了return,那么整个生成器就会直接结束。
3、可以通过for-of遍历generator对象,(不过他只会遍历所有yield返回的值)
4、如果要使用generator发起多次请求,那么,在适当的时候执行next方法就可以连续发起多次请求了。

案例

<body>
    用户名:<input type="text" value="admin">
    密码:<input type="password" value="12345">
    <button type="button">登陆</button><br>
    <div></div>
</body>
<script src="./jquery-3.3.1.js"></script>
<script>
    $(function () {
        $('button').on('click', function () {

            let username = $('input:text').val()
            let password = $('input:password').val()
            //声明一个空对象,用于接收每次请求返回的值
            var obj = {}
            function* gen() {
                yield fetch('http://127.0.0.1:8081/login?username=' + username + '&password=' + password).then(function (data) {
                    return data.json();
                }).then(function (data) {
                    obj = data
                    return data;
                })
                yield fetch('http://127.0.0.1:8081/getInf?username=' + obj.username).then(function (data) {
                    return data.json()
                }).then(function (data) {
                    obj = data
                    console.log(obj)
                    return data;
                })
                yield fetch('http://127.0.0.1:8081/getSum?level=' + obj.level).then(function (data) {
                    return data.json()
                }).then(function (data) {
                    obj = data
                    console.log(obj)
                    return data;
                })
                return 'end';
            }

            var g1 = gen();

            // 第一次发起请求
            // var f1=g1.next().value
            var f1 = g1.next().value.then(function (data) {
                console.log('1', data)
                var username = data.username;
                if (username == 'admin') {
                    // 第二次发起请求
                    g1.next().value.then(function (data) {
                        console.log('2', data)
                        let level = data.level;
                        let name = data.name;
                        let sex = data.sex;
                        if (level == '高级VIP') {
                            // 第三次发起请求
                            g1.next().value.then(function (data) {
                                console.log('2', data)
                                let sum = data.sum;
                                $('div').append(`名字:${name}<br>性别:${sex}<br>等级:${level}<br>总额:${sum}`)
                            })
                        }
                    })
                }
            })
        })
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值