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框架来使用
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    小禾满月了
    Gitlab-CI使用及.gitlab-ci.yml配置入门一篇就够了
    什么是CLI?
    什么是root帐户?
    Linux 的目录结构是怎样的?
    什么叫 CC 攻击?什么叫 DDOS 攻击?
    什么是 inode ?
    判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下?
    编写 Shell 程序,实现自动删除 50 个账号的功能,账号名为stud1 至 stud50 ?
    请问当用户反馈网站访问慢,如何处理?
  • 原文地址:https://www.cnblogs.com/ht955/p/14170895.html
Copyright © 2011-2022 走看看