个人谈谈Promise(上)

首先复习下JS的执行机制(事假循环)

  1. js代码开始执行后,主线程执行栈中会把任务分为两类.

  2. 一类是同步任务, 一类是异步任务; 主线程执行栈优先执行同步任务,

  3. 异步任务会被放入特定的处理程序中,满足条件后,被放到消息(任务/事件)队列中,

  4. 主线程执行栈中所有的同步任务执行完毕之后,通过事件循环去消息(任务/事件)队列中,

  5. 挑选优先满足条件的程序,放入主线程执行栈中执行。事件循环,周而复始,一直执行。

其次复习下微任务和宏任务

        在ES3 以及以前的版本中,JavaScript本身没有发起异步请求的能力,也就没有微任务的存 在。在ES5之后,JavaScript引入了Promise,这样,不需要浏览器,JavaScript引擎自身也能 够发起异步任务了。(Tick会触发浏览器渲染,Promise不会触发,所以更加轻量级,多使用)

宏任务:

        (macro)task,可以理解是每次执行栈执行的代码就是一个宏任务

        1.主线程上的执行栈中所有的代码块

        2.主线程上的执行栈中所有的代码块

        3.setTimeout setInterval Ajax 事件..

微任务:

        微任务(microtask)是宏任务中的一个部分,它的执行时机是在同步代码执行之后,下一个宏任务执行之前。总结起来,微任务有:

        1.Promise.then

        2.process.nextTick(Node.js 环境)

宏任务和微任务执行机制:

        JS优先执行同步任务,然后执行微任务,最后执行宏任务。

        总结:Promise中的then()比大部分异步代码,优先执行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值