JQuery两个不同的异步ajax调用返回未定义的
我已经研究了关于这个问题的所有类似问题,但仍然无法找出它应该如何工作。谁能把我引向正确的方向。数据和数据2不是按时加载的,而是在我跳过$之后。当它们出现在chrome调试器中时。提前谢谢JQuery两个不同的异步ajax调用返回未定义的,jquery,ajax,asynchronous,jquery-deferred,Jquery,Ajax,Asynchronous,Jquery Deferred,我已经研究了关于这个问题的所有类似问题,但仍然无法找出它应该如何工作。谁能把我引向正确的方向。数据和数据2不是按时加载的,而是在我跳过$之后。当它们出现在chrome调试器中时。提前谢谢 function First (number) { return $.ajax({ url: "/…", data: { 'number': number }, type: "POST", cache: "False",
function First (number) {
return $.ajax({
url: "/…",
data: { 'number': number },
type: "POST",
cache: "False",
success: function (data) {
return data;
},
error: function (xhr, type) {
alert('Something went wrong.')
}
});
}
function Second (number) {
return $.ajax({
url: "/…",
data: { 'number': number },
type: "POST",
cache: "False",
success: function (data2) {
return data2;
},
error: function (xhr, type) {
alert('Something went wrong.')
}
});
}
function DoSomeBusiness(number) {
$.when(First(number), Second(number)).then(function (data, data2) {
var someData = data; // data and data2 is undefined for sometime but right after I pass this line of code they appear correctly but i cannot use them cause they’re not loading on time.
var someData2 = data2;
});
.. do some business
};
不要在ajax调用中使用success/error字段,您应该在.then回调中管理它们 编辑: 缓存字段应该是布尔值 编辑2: 问题不是很清楚,我认为问题是回调干扰了延迟行为,因为代码看起来很好。 也许OP想访问他写的数据和数据2
.. do some business
这是一个错误,因为在.then回调中的任何内容之前都会执行那里的任何内容。
所以OP只需将您的代码移动到回调中,它就可以工作了。可能重复的@Liam OP使用的是Promise和
$。当()
所以我知道dup target不正确时,ES2015+中有一整节:带有than()Satpalnote:success/error/complete的Promises现在已被弃用,最好使用done/fail/always更不用说第一线的扩展了。。。success
中的return
不起任何作用,也不属于承诺链的一部分