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);
}
})
})
});
console.log("第三个请求成功之前打印,证明不是同步代码");
搜索“js promise”,这是专门解决这个问题的。如果你需要大量使用回调嵌套,可以用这种办法。如果用的很少,还不如直接嵌套,毕竟低版本浏览器不能直接支持,还得引入一些额外的js文件解决兼容问题。