javascript - 在 IE 中轮询的 setTimeout 间隔是多少比较合适?

标签 javascript internet-explorer polling setinterval

我有一个在浏览器 (IE) 中运行的 ActiveX 对象(我有源代码)。 ActiveX 对象有一个 UI,它引发事件。我想响应浏览器中的这些事件。

我不想从 ActiveX 对象事件调用 JavaScript 函数:因此,我希望 JavaScript 轮询 ActiveX 对象的方法(也就是说,“您有任何事件要报告吗?”) .

我将使用如下代码来做到这一点:

function findActiveXObject() {
    return document.getElementById('MyActiveXObject');
}
function startPolling() {
    setTimeout('pollForEvents()', 100);
}
function pollForEvents() {
    var activeXObject = findActiveXObject();
    var eventMsg = activeXObject.PollForEvent();
    if (eventMsg != null)
    {
        //do something with the event
        alert(eventMsg);
    }
    //poll again soon
    startPolling();
}

什么是合适的轮询间隔?

我猜,虽然我不确定,工作量很小:它只是调用 ActiveX 对象的方法,该方法要么返回已缓存的字符串,要么返回 null。

我想经常轮询:这样看起来浏览器(实际上是 JavaScript)能够迅速响应 ActiveX 对象中的 UI 事件。

100 毫秒是否太小? 50 毫秒怎么样?

在 100 毫秒的间隔下,我在浏览器中仅看到 1% 的 CPU 利用率:但这只是在我的计算机上。一般情况下(运行 IE 的台式机)怎么样?

如果这是一个 native 线程,我不会担心每 50 毫秒唤醒它,但我在 IE 中运行 JavaScript 的经验很少。

最佳答案

我建议每秒轮询一次。
您真的需要即时 react 吗?

此外,您不应将字符串传递给 setTimeout
相反,您应该传递函数本身,例如 htis:

setTimeout(pollForEvents, 1000);

关于javascript - 在 IE 中轮询的 setTimeout 间隔是多少比较合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596610/

相关文章:

javascript - D3.js ~ 有没有办法将 csv header 值访问到下拉列表中?

javascript - 必需的属性在 Firefox 上不起作用

python - 编写一个等待并监听直到满足条件的 Python 函数,类似于 WebDriverWait().until()

JavaScript 正则表达式 : replace this or that word (have or not whitespaces between words)

javascript - 在 JavaScript 中检查 JSON 中的空数据

jquery - highcharts:Internet Explorer 忽略我的 div 容器的宽度

html - 如何在 IE7 中使一个空的 anchor 标记可点击?

css - Drupal 7 - Internet Explorer 7&8 忽略样式表

c# - 如何将时基轮询与等待任务结合起来

android - 以较长的间隔时间轮询数据库,哪种方法最好、最有效?