js异步任务

(所有任务都要排队,一个结束才到下一个,如果某个任务加载时间过长,会导致页面的渲染不连贯,把后面任务阻塞了)

js是单线程,为了解决阻塞问题就引入了同步任务和异步任务        

 同步任务指的是:
     在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;
 异步任务指的是:
     不进入主线程、而进入”任务队列”的任务,当主线程中的任务运行完了,才会从”任务队列”取出异步任务放入主线程执行。

1、所有同步任务都在主线程上执行

2、主线程外由一个任务队列,存放着有了结果的异步函数。

3、当主线程中的所有同步任务执行完毕,就会读取任务队列中的异步任务,按顺序取出异步任务放入主线程中执行

4、只要任务队列中一直存在任务,就会不断的重复第三步

异步任务分为宏任务和微任务

1.宏任务

- 定时器

- 事件绑定

- ajax

- 回调函数

- Node中fs可以进行异步的I/O操作

2.微任务

- Promise(async/await) => Promise并不是完全的同步,在promise中是同步任务,执行resolve或者reject回调的时候,此时是异步操作,会先将then/catch等放到微任务队列。当主栈完成后,才会再去调用resolve/reject方法执行

- process.nextTick (node中实现的api,把当前任务放到主栈最后执行,当主栈执行完,先执行nextTick,再到等待队列中找)

- MutationObserver (创建并返回一个新的 MutationObserver 它会在指定的DOM发生变化时被调用。)

顺序

同步(Promise)>异步(微任务(process.nextTick、Promise.then、Promise.catch、resolve、reject)>宏任务(setTimeout、setInterval、setImmediate))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鸡腿最好吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值