首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    setImmediate() vs setTimeout() 在 JavaScript 中的区别

    setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中,setImmediate() 和 setTimeout() 都用于调度任务...("setImmediate 2"); }); 当你运行这段代码时,你可能期望 setTimeout 回调按定义的顺序执行,然后是 setImmediate 回调。...但你在控制台中看到的是: setTimeout 1 setImmediate 1 setImmediate 2 setTimeout 2 如果这让你感到困惑,不要担心。让我们解开其中的原因。...setImmediate() 另一方面,setImmediate() 设计用于在 I/O 事件完成后执行回调,在同一事件循环迭代中。...为什么 setImmediate 回调会一起运行? 相同的事件循环周期:两个 setImmediate 调用在事件循环的同一个周期(或循环)中被放置到宏任务队列中。

    9410

    nodejs的setTimeout(fn,0)和setImmediate谁先执行的问题

    我们首先看一下下面这段代码 setTimeout(()=>{ console.log('setTimeout'); },0) setImmediate(()=>{ console.log('setImmedate...setTimeout是属于定时器阶段,setImmediate是属于check阶段。顺序上定时器阶段是比check更早被执行的。...在分析nodejs的setImmediate和setTimeout的文章中已经介绍过这两个函数对应的实现原理。这里就不细说了。其中setTimeout的实现代码里有一个很重要的细节。...nodejs启动的时候,会编译执行上面的代码,开始一个定时器,挂载一个setImmediate节点在队列。...这时候就会执行setImmediate的回调。所以,一开始的那段代码的输出结果是取决于启动定时器的时间到libuv执行定时器阶段是否过去了1毫秒。

    1.5K20

    setTimeout和setImmediate到底谁先执行,本文让你彻底理解Event Loop

    笼统的知道setImmediate比setTimeout(fn, 0)先执行是不够的,因为有些情况下setTimeout(fn, 0)是会比setImmediate先执行的。...setImmediate和setTimeout 上面的这个流程说简单点就是在一个异步流程里,setImmediate会比定时器先执行,我们写点代码来试试: console.log('outer');...和我们前面讲的一样,setImmediate先执行了。...(() => { console.log('setImmediate'); }); }); 复制代码 这里setTimeout和setImmediate在readFile的回调里面...,由于readFile回调是I/O操作,他本身就在poll阶段,所以他里面的定时器只能进入下个timers阶段,但是setImmediate却可以在接下来的check阶段运行,所以setImmediate

    99141

    事件循环详解

    (vue2.0已经废弃使用此API) setImmediate/setTimeout setImmediate为IE特有的,我们可以在IE浏览器环境下做测试 setImmediate(() => {...阶段 此阶段专门执行setImmediate的回调,当poll阶段进入空闲状态,并且setImmediate队列中有callback时,事件循环进入这个阶段 close阶段 当一个socket连接或者一个...') }) // => setImmediate -> timeout // or timeout -> setImmediate 例子代码地址 多运行几次,运行结果是不一定的,这取决于运行代码的环境。...console.log('timeout') }, 0) setImmediate(() => { console.log('setImmediate') }) }) //...=> setImmediate -> timeout 例子代码地址 回顾上面提到的阶段,在I/O事件的回调中,setImmediate的回调永远优先于setTimeout的回调执行。

    62120
    领券