赞助
            什么是回调地狱
                ajax请求,是一个异步执行的程序
                如果要在第一次请求结束之后,执行的操作,必须要写在ajax请求中,才能争取获取请求结果

                const xhr = new XMLHttpRequest();
                xhr.open(请求方式,路径?参数);
                xhr.send();
                xhr.onload = function(){
                    xhr.response
                    
                    const xhr2 = new XMLHttpRequest();
                    xhr2.open(请求方式,路径?name=xhr.response.name);
                    xhr2.send();
                    xhr2.onload = function(){
                        xhr2.response
                        
                        const xhr3 = new XMLHttpRequest();
                        xhr3.open(请求方式,路径?name=xhr.response.name);
                        xhr3.send();
                        xhr3.onload = function(){
                            xhr3.response
                        }   
                    }
                }

        
            在一个回调程序中,嵌套多个其他回调程序,这样的语法形式成为回调地狱                
            简单理解,就是异步执行的回调的嵌套

            解决方案,将嵌套的异步程序  --- 嵌套
            可以写成同步程序的语法形式 --- 平级

            执行也必须按照顺序执行,上一个异步执行结束,再执行下一个异步程序
        
        总结:
            解决回调地狱
                1, 使用 promise 来定义一个 函数,执行 ajax 请求
                2, 执行 这个函数时 , 要是通过 async 来封装一个新的函数来执行
                   变量中,存储的是 ajax 请求的结果,可以执行相应的操作
                   
                   使用 await 执行的 请求 是异步请求,但是会按照顺序执行
                   类似于同步执行效果,逐一执行

                   与 async 和 await 配合使用时,不用使用 .then 来执行程序
                   ajax 请求结果,存储在 变量中,可以直接操作变量

                   async function fun(){
                       const 变量1 =  await promise封装的ajax请求();
                       
                       const 变量2 =  await promise封装的ajax请求();
                       
                   }

                3, 实际项目中,要配合vue框架来使用
posted on 2020-12-21 23:55  Tsunami黄嵩粟  阅读(246)  评论(0编辑  收藏  举报