我正在尝试打开一个弹出窗口,等待X秒钟,然后关闭该弹出窗口。

(用例正在向Webapp发送通知-但我们不能只执行GET请求,因为它需要在同一 session 中,因此我们可以使用登录 session )

我无法使用setTimeout,因为我们无法在附加组件/扩展中使用它

如何在不求助于CPU周期的情况下获得类似的功能,这显然会导致明显的延迟?

最佳答案

您可以使用nsITimer。

下面是一个基本示例,但您可以在https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsITimer的相关文档页面上找到更多信息(包括使用Components.interfaces.nsITimer.TYPE_REPEATING_SLACK替代setInterval)。

// we need an nsITimerCallback compatible interface for the callbacks.
var event = {
  notify: function(timer) {
    alert("Fire!");
  }
}

// Create the timer...
var timer = Components.classes["@mozilla.org/timer;1"]
    .createInstance(Components.interfaces.nsITimer);

// initialize it to call event.notify() once after exactly ten seconds.
timer.initWithCallback(event,10000, Components.interfaces.nsITimer.TYPE_ONE_SHOT);

08-08 05:19