js异步任务的简单总结

  1. 首先我们会利用异步API发起调用,无论哪一种异步任务,主线程代码的基本语义就是 关注哪个事件 + 注册回调函数
  • 例1: fetch.then,就是关注指定url的响应事件,注册响应后的回调,注意调用fetch后会立即返回promise对象,主线程会把回调会注册到promise对象上
  • 例2: addEventListener,就是关注某个UI事件(如click),注册事件触发后的回调,主线程会将回调注册到DOM对象上
  1. js宿主环境(浏览器或node)的其他线程会继续执行异步任务(如发送请求、等待响应或执行定时器)
  2. 一旦这个任务准备好被主线程处理(即事件被触发,如“定时器到时”,“鼠标点击”,“指定url的网络请求得到响应”),js宿主环境的线程就会将异步任务放入任务队列中。然后,事件循环会在主线程空闲时,从任务队列中取出这个任务,压入js的执行上下文
  3. js主线程执行相应的回调函数。这就是JavaScript处理异步任务的方式。

由于js是单线程,因为在发起异步调用之后,后续异步任务的继续执行,任务就绪后加入任务队列,事件循环读取任务队列的过程都是由宿主环境的线程完成的,对js来说都是不可见的,直到js运行回调函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值