美文网首页
node与浏览器 event loop的区别

node与浏览器 event loop的区别

作者: 皮神雷卡丘 | 来源:发表于2019-10-14 10:54 被阅读0次

    浏览器环境下,microtask的任务队列是每个macrotask执行完之后执行。而在Node.js中,microtask会在事件循环的各个阶段之间执行,也就是一个阶段执行完毕,就会去执行microtask队列的任务。

    event loop
    掘金原文链接
    Node 的 Event Loop 分为 6 个阶段:

    timers:执行setTimeout()setInterval()中到期的callback。
    pending callback: 上一轮循环中有少数的I/O callback会被延迟到这一轮的这一阶段执行
    idle, prepare:仅内部使用
    poll: 最为重要的阶段,执行I/O callback,在适当的条件下会阻塞在这个阶段
    check: 执行setImmediate的callback
    close callbacks: 执行close事件的callback,例如socket.on('close'[,fn])http.server.on('close, fn)

    node是事件驱动模型
    事件驱动的程序,就是一个死循环,并以一个线程的形式存在,这个死循环包括两个部分,第一个部分是按照一定的条件接收并选择一个要处理的事件,第二个部分就是事件的处理过程。程序的执行过程就是选择事件和处理事件,而当没有任何事件触发时,程序会因查询事件队列失败而进入睡眠状态,从而释放cpu。

    相关文章

      网友评论

          本文标题:node与浏览器 event loop的区别

          本文链接:https://www.haomeiwen.com/subject/mugcpctx.html