【发布时间】:2011-06-06 18:55:40
【问题描述】:
我正在开发一个 Firefox 扩展,并希望使用计时器来控制每 60 秒发布一次数据。
以下内容放在主 .js 文件的初始化函数中:
var timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
timer.init(sendResults(true), 60000, 1);
但是,当我尝试运行它时,我在 Firefox 控制台中收到以下错误:
"Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsITimer.init]" nsresult: "0x80004003"...
等等。我做错了什么?
更新:
以下内容可以满足我的需要,尽管最初使用 nsITimer 的问题仍然存在:
var 间隔 = window.setInterval(function(thisObj) { thisObj.sendResults(true); }, 1000, this); }
有用的链接解释了为什么这样做(关于 setInterval/sendResults 的文档,以及“this”问题的解决方案:
https://developer.mozilla.org/En/DOM/window.setTimeout https://developer.mozilla.org/En/Window.setInterval(不允许我发布超过两个超链接)
http://klevo.sk/javascript/javascripts-settimeout-and-how-to-use-it-with-your-methods/
【问题讨论】:
-
您不使用
setTimeout或setInterval的任何原因? -
@Pat:不是特别 - nsITimer 似乎是具有重复计时器的更好解决方案,这似乎与 setTimeout/setInterval 更混乱,特别是因为我在尝试使用 'this '。
-
@Pat:我再次尝试使用 setInterval 并让它工作。使用 setInterval 用我的解决方案更新问题。
标签: javascript firefox-addon settimeout setinterval firefox4