解决回调地狱,异步变同步问题

1.什么是回调地狱

      回调地狱:多个ajax的请求出现了先后的关系,如:

       $.get('./json/a.json', function (value1) {
            $.get('./json/b.json', function (value2) {
                $.get('./json/c.json', function (value3) {
                })
            })
        })

由于ajax是一个异步操作,因为需要将每一个ajax变为同步,保证嵌套的ajax可以使用上一级ajax请求返回值

2.解决回调地狱

    es6

        利用promise + ajax,将ajax变为同步

       function newPromise(url, params = {}) {
            return new Promise((resolve, reject) => {
                $.get(url, params,function (value) {
                    resolve(value)
                })
            })
        }

        newPromise('./json/a.json')
        .then(bkey => {
            return newPromise('./json/b.json?bkey'+ bkey)
        }).then(ckey =>{
            return newPromise('./json/c.json?bkey'+ ckey)
        }
        ).then(msg =>{
            console.log(msg)
        })

promise的出现其实就是为了解决回调地狱,它是一个管道形式而不是嵌套形式,它是一层一层往下走。

promise利用reslove出去的数据,可以用then接收,reject的数据,用catch接收

    es7

   function newPromise(url, params = {}) {
            return new Promise((resolve, reject) => {
                $.get(url, params,function (value) {
                    resolve(value)
                })
            })
        }

    //es7
    async function PromiseAjax(){
        //解决异步执行,让ajax变为同步
        let bkey = await newPromise('./json/a.json')
        let ckey = await newPromise('./json/b.json',{bkey})
        let cMsg = await newPromise('./json/c.json',{ckey})
    }

    PromiseAjax();

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值