Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript 使用Jquery$When进行异步和同步函数调用_Javascript_Jquery_Promise_Jquery Deferred - Fatal编程技术网

Javascript 使用Jquery$When进行异步和同步函数调用

Javascript 使用Jquery$When进行异步和同步函数调用,javascript,jquery,promise,jquery-deferred,Javascript,Jquery,Promise,Jquery Deferred,我需要进行异步调用和同步调用,当两个调用都结束时,我需要调用另一个函数。为此,我正在使用JQuery。当我进行多个异步调用时,该函数可以正常工作,但当我进行同步调用时,会出现错误。我用下面的代码打电话 var requestTwo = function() { var v = 10; var j = 20; var k = v + j; }; $.when($.get(url, function (result, status,

我需要进行异步调用和同步调用,当两个调用都结束时,我需要调用另一个函数。为此,我正在使用JQuery。当我进行多个异步调用时,该函数可以正常工作,但当我进行同步调用时,会出现错误。我用下面的代码打电话

var requestTwo = function() {
        var v = 10;
        var j = 20;
        var k = v + j;
    };

    $.when($.get(url, function (result, status, xhr) {
        myresult = result;
    })),
    (requestTwo).then(function (r1, r2) {
        //DO something

     });
我遇到以下错误:

JavaScript runtime error: Object doesn't support property or method 'then'

您不需要
$。当
用于同步函数调用时,只需调用它们即可

$.get(url, function (result, status, xhr) {
    var myresult = result;
    requestTwo();
     // DO something here, it's synchronous and single threaded, 
     // so the function will be finished
});

据我所知,你关于“when”函数的第二个参数必须是一个承诺。看这里。这似乎是您的代码中的一个输入错误

requestTwo不是请求,而是函数,所以我不确定您在这里期望的是什么行为。
。然后()
是承诺中存在的东西
requestTwo()
不返回承诺,因此无法调用
。然后()
返回值
requestTwo()
。另外,单个
$.get()
不需要
$.when()
<代码>$。当您希望等待多个承诺完成时,将使用when()。最后,如果
requestTwo()。常规函数调用不需要任何额外的回调函数或
.then()
函数。@jfriend00:有意义!!!