第一种解决办法 (把异步请求改成同步 这样失去了ajax异步的优势)
(function(){
var arr = [];
$.ajax({
data:{a:1},
url:'www.123.com',
type:'post',
async:false,//把异步的ajax 改成同步的ajax
dataType:'json',
success:function(data){
//这时候需要这个ajax 请求完成 比如你需要后台给你返回的data.abc而下一个接口需要这个参数
arr= data;
},
error:function(){}
});
第二个请求
$.ajax({
data:{b:arr.abc}, // 后台需要上面ajax的返回参数
url:'www.123.com/123',
type:'post',
dataType:'json',
async:false,//把异步的ajax 改成同步的ajax
success:function(data){
arr= data;
},
error:function(){}
});
})();
第二种解决方法 用ES6的 Promise
new Promise(function(resolve, reject) {
$.ajax({
url: "url1",
success: function(data) {
resolve(data);
}
});
}).then(function(value) {
return new Promise(function(resolve, reject) {
$.ajax({
url: "url2",
data: {
data: value//第一个请求的返回值
},
success: function(data) {
resolve(data);
}
});
})
}).then(function(value) {
return new Promise(function(resolve, reject) {
$.ajax({
url: "url3",
data: {
data: value//第二个请求的返回值
},
success: function(data) {
console.log("三个请求全部成功");
resolve(data);
}
})
})
});