Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery两个不同的异步ajax调用返回未定义的_Jquery_Ajax_Asynchronous_Jquery Deferred - Fatal编程技术网

JQuery两个不同的异步ajax调用返回未定义的

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",

我已经研究了关于这个问题的所有类似问题,但仍然无法找出它应该如何工作。谁能把我引向正确的方向。数据和数据2不是按时加载的,而是在我跳过$之后。当它们出现在chrome调试器中时。提前谢谢

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
不起任何作用,也不属于承诺链的一部分