gpt4 book ai didi

javascript - 如何向 javascript 方法添加多个回调?

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:17 26 4
gpt4 key购买 nike

我使用“函数”技术创建了一个简单的 javascript 类。在类里面,我有一个 websocket 监听器,它在收到特定消息时触发一个函数。我可以很容易地向它添加一个外部回调,如下所示

function MyClass() {
self = this; // to access main object from methods

// websocket definition

function websocketMessageInterpreter(message){
if(message == "Hello!") onHelloMessageBase();
}

function onHelloMessageBase(param){

// call user defined callback
self.userDefinedCallback(param);
}
this.userDefinedCallback= function(param){}; //default empty callback
}

外部我用它作为

var myObject = new MyClass();
myObject.userDefinedCallback = function(){alert("Someone said hello!");};

有没有模型可以让我做这样的事情?

myObject.userDefinedCallback += function1;
myObject.userDefinedCallback += function2;

也许以后

myObject.userDefinedCallback -= function1;

最佳答案

这样做的通常方法是有一个回调数组,以及像 addCallback(callback)removeCallback(callback) 这样的方法让 API 的用户添加并删除回调。

addCallback 基本上是:

function addCallback(callback) {
if (this.callbacks.indexOf(callback) < 0) {
this.callbacks.push(callback);
}
}

removeCallback 基本上是:

function removeCallback(callback) {
var index;
if ((index = this.callbacks.indexOf(callback)) >= 0) {
this.callbacks.splice(index, 1);
}
}

如果你需要支持像 IE6 这样可能没有 Array#indexOf 的非常老的浏览器,因为你使用的是 jQuery,你可以使用 jQuery.inArray相反。

关于javascript - 如何向 javascript 方法添加多个回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com