Javascript Jquery延迟未按预期运行
我打了两个ajax电话。仅当第一个完成时,才应调用第二个:Javascript Jquery延迟未按预期运行,javascript,jquery,Javascript,Jquery,我打了两个ajax电话。仅当第一个完成时,才应调用第二个: var deferred = $.Deferred(); firstAjaxCall(); deferred.done(function () { secondAjaxCall(); }); function firstAjaxCall() { $.ajax({ url: '/SomeUrl', type: 'POST', success: function () { deferr
var deferred = $.Deferred();
firstAjaxCall();
deferred.done(function () {
secondAjaxCall();
});
function firstAjaxCall() {
$.ajax({
url: '/SomeUrl',
type: 'POST',
success: function () {
deferred.resolve();
}
});
}
function secondAjaxCall() {
$.ajax({
url: '/SomeOtherUrl',
type: 'Get',
});
}
我也试过这样()
但是没有运气
尽管如此,在第一个例子中,有时第二个调用会先被调用,有时不会
在第一个示例中,流程如下所示:
firstAjaxCall();
secondAjaxCall();
deferred.resolve();
为什么第一次调用第二个调用时在
延迟之前调用。resolve()
?您必须实际将延迟从$.ajax
返回到$
function firstAjaxCall() {
return $.ajax({
url : '/SomeUrl',
type : 'POST'
});
}
function secondAjaxCall(data_from_first) {
return $.ajax({
url : '/SomeOtherUrl',
type : 'Get',
});
}
firstAjaxCall().done(secondAjaxCall);
您必须实际地将延迟从$.ajax
返回到$
function firstAjaxCall() {
return $.ajax({
url : '/SomeUrl',
type : 'POST'
});
}
function secondAjaxCall(data_from_first) {
return $.ajax({
url : '/SomeOtherUrl',
type : 'Get',
});
}
firstAjaxCall().done(secondAjaxCall);
您可以尝试在第一个函数的success函数中调用secondAjaxCall()
像这样:
function firstAjaxCall() {
return $.ajax({
url: '/SomeUrl',
type: 'POST',
success: secondAjaxCall()
});
}
您可以尝试在第一个函数的success函数中调用secondAjaxCall()
像这样:
function firstAjaxCall() {
return $.ajax({
url: '/SomeUrl',
type: 'POST',
success: secondAjaxCall()
});
}
这里不需要$.when()
。这可以是firstAjaxCall(),然后是(secondAjaxCall)
@jfriend00-没错,我之所以添加它,是因为OP正在使用它,并询问延迟情况。这里不需要$。when()
。这可以是firstAjaxCall(),然后是(secondAjaxCall)
@jfriend00-没错,我添加它是因为OP正在使用它,并询问延迟的问题