【发布时间】:2015-04-02 00:38:56
【问题描述】:
我有类似的东西:
function MyObject() {
var self = this;
this.callback = function() {
self.finishParams = Array.prototype.slice.call(arguments);
self.parent.finish();
}
this.start = function() {
this.currentCallback = this.callback
this.startFunc.apply(this.startFunc, this.startParams.concat(this.currentCallback));
}
}
this.startFunc 是一个类似于 function(param1, param2, param3, callback) 的函数 我无法控制 this.startFunc,只是它会调用带有一些参数的回调。
问题
我有一个 this.currentCallback,因为我需要能够取消回调。也就是我已经调用了this.startFunc,需要防止回调。
问题是,MyObject 可能会发送另一个回调(一次从不发送 2 个),但如果我在需要时不立即取消第一个,当我取回它们时我不知道哪个是有效的!可能会令人困惑,所以这里有一个图表:
- 发送回调 1 关闭
- 需要取消!在这里以某种方式取消回调 A
- 发送回调 2 关闭(仍然说函数有回调 1)
此时,如果我没有取消 A,那么当我收到回调时,我将不知道它是哪个。如果我确实取消了 A,那么我知道是 B,没有人担心。
如果你不明白请告诉我:)
【问题讨论】:
-
我认为你的做法是错误的......而不是取消当前的回调......你需要取消正在调用回调的进程......
-
也许您正在寻找去抖动? stackoverflow.com/q/15927371/218196
-
@ArunPJohny startFunc 中可能还有其他无法取消的内容。如果你说你可以取消只调用回调的进程,我该怎么做,我怎么知道要取消哪个?
-
回调只是一个函数。由您提供回调的函数来决定是否以及何时调用它。没有通用的 API 可以用来控制它,它是特定于应用程序的。
-
如果不能影响
startFunc...可以控制回调的参数吗?参数中是否有任何独特的东西,或者您可以在其中存储独特的东西?
标签: javascript function callback