代码之家  ›  专栏  ›  技术社区  ›  ChrisW

IE中轮询的好设置超时间隔是多少?

  •  0
  • ChrisW  · 技术社区  · 14 年前

    我不想从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毫秒怎么样?

    3 回复  |  直到 14 年前
        1
  •  1
  •   SLaks    14 年前

    我建议每秒钟投票一次。
    你真的需要即时反应吗?

    另外,你不应该把字符串传给 setTimeout

    setTimeout(pollForEvents, 1000);
    
        2
  •  1
  •   James Black    14 年前

    如果您需要更快的速度,减少超时时间,但是,您可能会发现,由于操作系统和时间限制,低于20-50ms的时间不会得到任何改进,因此线程可以获得足够的时间。

    我怀疑你会看到很多cpu利用率,如果你没有做太多,因为,如果它需要1毫秒做的操作,它可以更快,然后你花你的大部分时间睡觉,为这个。

    但是,归根结底是用户体验,这是主观的。对一个人来说可以接受的事情对另一个人来说可能显得很慢。

    所以,找到你认为合适的价值观,然后让朋友们试试,看看他们对答案的看法。如果没有好处的话,仅仅因为你可以,就没有理由走得更快。

        3
  •  0
  •   Zafer    14 年前

    这取决于 -使CPU繁忙的其他因素(闪存动画、其他轮询函数)

    由于其他因素,区间值不能反映实际值。因此,在您的机器中,较低的值似乎是正确的,但您不能确定其他客户机的确定性。我建议你尽量增加间隔时间。如果一秒钟足够,那就好了。