Javascript 使用Jquery$When进行异步和同步函数调用
我需要进行异步调用和同步调用,当两个调用都结束时,我需要调用另一个函数。为此,我正在使用JQuery。当我进行多个异步调用时,该函数可以正常工作,但当我进行同步调用时,会出现错误。我用下面的代码打电话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,
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:有意义!!!