jquery ajax 异步请求获取数据再次异步,有什么好的办法简洁一些
比如有一个函数,里边是ajax异步functionGetIntegralMallList(){$.ajax({type:"post",dataType:"json",ur...
比如有一个函数,里边是ajax异步
function GetIntegralMallList() {
$.ajax({
type: "post",
dataType: "json",
url: "地址",
success: function (data) {
//这里可以获取服务器的值,如果我还需要再异步请求一次将data当参数,这样就看起来很乱,要是再次异步回来的值又进行异步,那就代码已经不能读了
}
})
}
要求:1.不能用同步,这样会失去异步的优势。
2.除去把函数当参数传递进来的解决方法。 展开
function GetIntegralMallList() {
$.ajax({
type: "post",
dataType: "json",
url: "地址",
success: function (data) {
//这里可以获取服务器的值,如果我还需要再异步请求一次将data当参数,这样就看起来很乱,要是再次异步回来的值又进行异步,那就代码已经不能读了
}
})
}
要求:1.不能用同步,这样会失去异步的优势。
2.除去把函数当参数传递进来的解决方法。 展开
1个回答
展开全部
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文件解决兼容问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询