Jquery 使用$.ajax POST实现$.when

Jquery 使用$.ajax POST实现$.when,jquery,ajax,callback,Jquery,Ajax,Callback,我有一个AJAX POST函数。我想获得一个成功的回调,然后执行一个函数。我选择用$来实现这一目标 成功回调在打开窗口后激发。这是否意味着$.ajax在某种程度上没有延迟,而$.when只是如API中所述 如果将单个参数传递给jQuery.when,并且该参数不是 延期,将被视为已解决 这是一个简化的测试用例。生产代码同样失败。我必须触发此事件两次才能获取所有数据。有一个比赛条件 我可以插入断点使处理停止。该函数在我仍保留调试器时激发。因此,它不会等待成功的回调。约10秒后会出现短暂超时?我怎样

我有一个AJAX POST函数。我想获得一个成功的回调,然后执行一个函数。我选择用$来实现这一目标

成功回调在打开窗口后激发。这是否意味着$.ajax在某种程度上没有延迟,而$.when只是如API中所述

如果将单个参数传递给jQuery.when,并且该参数不是 延期,将被视为已解决

这是一个简化的测试用例。生产代码同样失败。我必须触发此事件两次才能获取所有数据。有一个比赛条件


我可以插入断点使处理停止。该函数在我仍保留调试器时激发。因此,它不会等待成功的回调。约10秒后会出现短暂超时?我怎样才能解决这个问题呢?

我想这是您的then语句:.thenfunction{openWindow};或者。然后打开窗户。如果您传递它,它将执行函数。

我认为这是您的then语句:.thenfunction{openWindow};或者。然后打开窗户。如果通过,它将执行函数。

+1这将修复测试用例。在添加匿名func之后,我在生产版本中仍然有一个竞争条件。只有约20%的数据进入报表。我的代码现在等待调试器。我不知道为什么我没有得到报告中的所有数据,但我认为一些不相关的东西出了问题。+1这修复了测试用例。在添加匿名func之后,我在生产版本中仍然有一个竞争条件。只有约20%的数据进入报表。我的代码现在等待调试器。我不知道为什么我没有得到报告中的所有数据,但我认为一些不相关的东西出了问题。
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 );
}