浏览器使用postMessage实现零延时定时器

Posted 刘翾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器使用postMessage实现零延时定时器相关的知识,希望对你有一定的参考价值。

原文地址: https://dbaron.org/log/20100309-faster-timeouts
作者: David Baron

浏览器零延时定时器

    (function() 
        var timeouts = [];
        var messageName = "zero-timeout-message";

        // 类似setTimeout, 但是仅仅接受一个函数argument, 没有延迟时间参数(永远是0)
        function setZeroTimeout(fn) 
            timeouts.push(fn);
            window.postMessage(messageName, "*");
        

        function handleMessage(event) 
            if (event.source == window && event.data == messageName) 
                event.stopPropagation();
                if (timeouts.length > 0) 
                    var fn = timeouts.shift();
                    fn();
                
            
        

        window.addEventListener("message", handleMessage, true);

        // Add the one thing we want added to the window object.
        window.setZeroTimeout = setZeroTimeout;
    )();

以上是关于浏览器使用postMessage实现零延时定时器的主要内容,如果未能解决你的问题,请参考以下文章

js 怎么设置延时

怎么用定时器写延时函数

请问各位,ucos ii中的软件定时器和延时有啥区别?

使用系统定时器SysTick实现精确延时微秒和毫秒函数

请问51单片机定时器延时的调用是怎么调用的我有点不明白,谢谢

STM32 不占用定时器(包括SysTick)实现精确延时(巧用DWT)