使用$ .ajax POST实现$ .when

时间:2011-10-28 20:49:28

标签: jquery ajax callback

我有一个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秒后发生)?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

我认为这是你当时的陈述:.then(function(){openWindow()});.then(openWindow)。如果你用()传递它将执行函数。