jquery - 清除/删除附加到 $.Deferred 对象的处理程序

标签 jquery jquery-deferred

非常简单的问题,我以为我能解决这个问题,但我却找不到答案。

是否可以清除/删除附加到延迟对象完成/失败/始终队列的处理程序。

var dfd = $.Deferred()

dfd.done(foo).fail(bar);

// User interacts with the page in a way that I do not want to fire foo or bar 
// when dfd is resolved or rejected

<<answer here>>

最佳答案

不,没有机制可以删除 $.Deferred() 上已注册的回调。

大多数时候,您只能访问 deferred 的 .promise() 接口(interface),这仅允许您注册回调并读取 Promise 的状态 - 您无法修改 通过任何公开方法的 promise 。

在您的情况下,您将需要这些注册的回调来检查由用户交互更改的其他一些状态变量,然后让它们决定是否继续。

关于jquery - 清除/删除附加到 $.Deferred 对象的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19560715/

相关文章:

javascript - Bootbox 不显示弹出模式

jquery - 用暗室声明一个对象

javascript - 排队/节流 jQuery ajax 请求

javascript - 延迟对象链可以用于事件处理程序吗?

jquery - 如何构建 "Last One Wins"jQuery-Ajax 队列?

javascript - jquery中如何给元素设置id?

javascript - 尝试阻止按钮单击时的模式关闭 - javascript

javascript - 为什么 jquery 不在对话框中显示我的 div?

javascript - 重复的 Ajax 调用以不同的方式解决 Deferred,如何解决?

javascript - Jquery deferred - 在前一个函数完成之前推迟函数调用