在以往开发中有时会出现以下场景:
在调用异步请求success callback中,进行下一次的异步请求,然后在success callback中在发起新的异步请求
例如:
cont ajax = (url) => {
return new Promise((resolve,reject)=>{
let xhr = new XMLHttpRequest();
xhr.open(‘GET‘,url);
xhr.responseType = ‘json‘;
xhr.onload = () => {
if (this.status ===200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
}
}
})
}
ajax(‘url‘).then(res=>{
ajax(‘url‘).then(res=>{
ajax(‘url‘).then(res=>{
})
})
})
这样就形成了回调地狱,及其不利于维护!
直接上写法
cont ajax = (url) => {
return new Promise((resolve,reject)=>{
let xhr = new XMLHttpRequest();
xhr.open(‘GET‘,url);
xhr.responseType = ‘json‘;
xhr.onload = () => {
if (this.status ===200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
}
}
})
}
ajax(‘url‘)
.then((res)=>{
return ajax(‘url‘)
})
.then((res)=>{
return ajax(‘url‘)
})
.then((res)=>{
return ajax(‘url‘)
})
总结下:
原文:https://www.cnblogs.com/nxlbingo/p/14774761.html