zoukankan      html  css  js  c++  java
  • 回调地狱

                什么是回调地狱
                    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框架来使用
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    Response生成注册验证码实现例子02
    Mysql 自增字段起始值auto_increment的修改方法
    elite核心库的加载方式及自动加载类库
    elite核心类库之事件类
    wamp速度缓慢的解决办法
    Dwzdialog中批量提交的问题处理
    PHP中缀表达式与逆波兰式的计算(用于工资项目等四则计算)
    PHP工资计算之逆波兰式
    elite核心类库之模板类
    PHP soap访问接口出错汇总及解决办法
  • 原文地址:https://www.cnblogs.com/ht955/p/14170895.html
Copyright © 2011-2022 走看看