Node.js---宏任务和微任务

宏任务和微任务都是异步耗时任务。

宏任务有setImmediate,setTimeout,setInterval, I/O,异步ajax,文件操作等

宏任务中的优先级:

setImmediate > setTimeout >  间歇调用 > I/O > 异步ajax

微任务有promise(then,catch,finally),process.nextTick等

微任务中的优先级:

Process.nextTick >  Promise(then,catch,finally)

js代码可以分为同步代码和异步代码,先执行同步代码,遇到异步代码不会执行,将异步代码放到异步任务队列中,异步任务又分为宏任务和微任务.

主线程不断从异步任务队列中读取事件,这个过程是循环不断的,这种运行机制就叫做Event Loop(事件循环)

一次事件循环机制可以将所有的微任务执行完毕,一次事件循环只能执行一个宏任务。


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,事件循环(Event Loop)是一个非常重要的概念。事件循环是一种机制,用于执行异步任务,以保证 JavaScript 在单线程的情况下能够处理多个任务。 在事件循环中,我们通常将任务分为任务(macro task)和任务(micro task)两类。 任务是由浏览器或 Node.js 的 API 提供的异步任务,例如 setTimeout、setInterval、requestAnimationFrame、I/O 操作等。这些任务会被添加到任务队列(task queue)中,当主线程执行完当前任务后,会从队列中取出一个任务执行,直到队列为空。 任务则是在当前任务执行结束后立即执行的异步任务,例如 Promise 的回调函数、MutationObserver 的回调函数等。这些任务会被添加到任务队列(microtask queue)中,当主线程执行完当前任务后,会从任务队列中按顺序取出所有任务执行,直到队列为空。 需要注意的是,任务的执行优先级高于任务,也就是说,在执行任务过程中,如果有任务需要执行,会先执行完所有任务,然后再执行下一个任务。 下面是一个示例代码,用于演示任务任务的执行顺序: ```javascript console.log('start'); setTimeout(() => { console.log('setTimeout'); }, 0); Promise.resolve().then(() => { console.log('Promise'); }); console.log('end'); ``` 上述代码中,先执行同步代码,输出 `start` 和 `end`,然后将 `setTimeout` 函数添加到任务队列中,并将 Promise 的回调函数添加到任务队列中。最后,按顺序取出任务队列中的任务,输出 `Promise`,再取出任务队列中的任务,输出 `setTimeout`。 输出结果如下: ``` start end Promise setTimeout ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值