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