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

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)
        })

    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();

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章