什么是回调地狱
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框架来使用