我有一个AJAX POST功能。我想获得一个成功的回调然后执行一个函数。我选择使用$.when
作为follows
var url = '/echo/html/';
var json_text = ' ';
var FireOrderCounter = 0;
$.when(
$.ajax({
type: 'POST',
url: url,
data: json_text,
success: function () {
FireOrderCounter++;
alert('successfully completed Action ' + FireOrderCounter);
var millisecondsToWait = 5000;
setTimeout(function() {
FireOrderCounter++;
alert('Done Spinnin ' + FireOrderCounter);
}, millisecondsToWait);
},
dataType: 'html'
})
).then(openWindow());
function openWindow() {
FireOrderCounter++;
alert('opened window' + FireOrderCounter );
}
在success
之后 openWindow()
回调触发。这是否意味着$.ajax
在某种程度上不会延迟,而$.when
只是assuming success,如API所述?
如果将单个参数传递给jQuery.when并且它不是 延期,它将被视为已解决的
这是一个简化的测试用例。生产代码同样失败。我必须两次触发此事件以获取所有数据。有竞争条件。
我可以插入一个断点来使处理停止。当我仍然保持调试器时,函数触发。所以,它不等待成功回调。短暂超时(约10秒后发生)?我该如何解决这个问题?
答案 0 :(得分:4)
我认为这是你当时的陈述:.then(function(){openWindow()});
或.then(openWindow)
。如果你用()传递它将执行函数。