编辑:我需要调用一个获取数据并重新加载页面内容的函数。但是一旦另一个函数获取了数据(webSql),就必须调用它。我不能使用 WebSql 回调,因为变量超出了范围。所以我创建了一个自定义事件并在第二个函数范围内添加了一个监听器。因此,当获取数据时,我将在第一个函数范围内调度事件。现在的问题是,如果页面多次重新加载,侦听器将被添加多次,并且所有我不想要的都将被调用。
我需要确保只有一个函数正在侦听自定义事件。现在正在删除侦听器,一旦它像这样被调用:
document.addEventListener("customEvent", function () {
actualCallBack(var1, var2); // Since I need to pass parameters I need to use callBack within an anonymous function.
this.removeEventListener("customEvent", arguments.callee, false);
}, false);
但问题是匿名函数只有在首先被调用后才会被删除。听众有可能获得多次增加。如何在添加新事件侦听器之前删除事件侦听器?
document.removeEventListener("customEvent");
document.addEventListener(...);
如果改用变量函数,我可以删除它,但我需要将一些参数传递给回调,所以我需要使用匿名函数。