面试题-模拟微队列

      /**
         * runMicroTask
         * @param {Function} func 需要执行的函数
         * @returns {void}
         * @example
         * runMicroTask(() => {console.log('微任务')})
         * // 输出:微任务
        */
        function runMicroTask(func){
            // 先判断是否存在promise
            if(typeof Promise !== 'undefined'){
                Promise.resolve().then((value)=>{
                    func();
                });
                return;
            }
            // 判断是否是MutationObserver
            if(typeof MutationObserver !== 'undefined'){
                const observer = new MutationObserver((value)=>{
                    func();
                });
                observer.observe(document.body, {attributes: true});
                return
            }
            // 判断是否存在nextTick
            if(typeof setImmediate !== 'undefined'){
                setImmediate(func);
                return
            }
            // 最后使用setTimeout
            setTimeout(func, 0)
        }
        function test(){
            console.log('test');
        }
        runMicroTask(test);
        console.log('end');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值