在返回结果之前,我如何等待 jQuery.ajaxComplete in promise.done
How can I wait for jQuery.ajaxComplete within promise.done before returning a result?
我正在尝试在jQuery的ajaxComplete中设置一个值,并在承诺完成时请求该值。 我遇到的问题是jQuery的ajaxComplete在promise.done之后运行。
$(document).ajaxComplete(function (e, jqXhr) {
// Set a value here
});
var promise = $.post(url,{});
promise.done(function(){
// Ask for the value here, but wait on ajaxComplete before returning it
});
有没有办法将值的返回推迟到jQuery的ajaxComplete完成后? 我已经查看了jQuery的延迟方法,但我不确定如何将其与ajaxComplete结合使用。
ajaxComplete
没有为这种情况提供钩子。解决延迟后,事件将始终触发。我们可以在源代码中看到它:
// Complete
completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
if (fireGlobals) {
globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
// Handle the global AJAX counter
if (! (--jQuery.active)) {
jQuery.event.trigger("ajaxStop");
}
}
您必须自己实现它,例如,通过额外的超时来延迟then
处理程序的执行:
function defer(val){
var d = $.Deferred();
setTimeout(function(){ d.resolve(val); }, 0);
return d.promise();
}
这意味着:
var promise = $.post(url, {}).then(defer);
promise.done(function(){
// all here
});
相关文章:
- 等待300毫秒,然后使用jQuery向下滑动菜单
- 正在等待jQuery动画完成
- 如何使用jQuery等待来自回调的异步调用
- 强制jQuery Deferred等待Ajax在“”中完成;那么“;处理程序
- 在jquery中等待getJSON完成的回调
- 必须等待执行 jQuery,直到加载服务
- 延迟的javascript/jQuery搜索使用TypeScript不等待
- 等待JQuery执行,直到加载了整个页面,中断执行
- 让 JavaScript 函数等待 Jquery 对话框模态的结果
- JavaScript var 在等待 jQuery 完成动画处理时被覆盖
- set超时不等待 JQuery Mobile 中的指定间隔
- 在返回结果之前,我如何等待 jQuery.ajaxComplete in promise.done
- 等待jQuery $.获取在运行代码之前完成的函数
- 等待jQuery animation's回调完成执行
- 等待jQuery中所有异步函数完成
- 等待jquery ajax请求列表完成
- 等待jquery对话框返回
- 调用外部函数时无需等待jquery中触发的事件
- 正在等待jquery异步加载,然后再加载js
- 等待jquery第一个更改事件完成