为了账号安全,请及时绑定邮箱和手机立即绑定

js异步任务从开始执行到调用回调函数这段时间放到哪边了?

js异步任务从开始执行到调用回调函数这段时间放到哪边了?

慕婉清6462132 2019-03-19 15:11:07
最近在研究event loop,看了不少前辈们的文章,前辈们都说主线程在执行异步任务时,先发起调用,然后把它挂起,等他有返回值了放到任务队列里等待主线程调用回调函数获取返回值。但是,我不明白怎么个挂起法?挂起时主线程执行别的任务了,被挂起的异步任务在干嘛?在哪里?比如ajax请求,接收服务器传过来的数据时不需要线程运行它吗?有没有老哥知道的?求解。
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

这里应该涉及到一个“事件触发线程”的概念。
推荐阅读从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
可能可以解决你的疑惑。

查看完整回答
反对 回复 2019-04-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

  1. 主线程在执行到异步调用时,将异步的代码挂在浏览器内核提供的异步线程去执行,而主线程继续执行同步代码。

  2. 异步线程执行完成后将回调放在消息队列中。

  3. 主线程通在消息队列中通过事件循环从消息队列中取出异步的回调再去执行。

比如ajax请求。
js引擎执行到ajax请求时,由浏览器新开线程来执行这个XMLHttpRequest,而js引擎提供的主线程,会去消息队列中循环查找回调来执行。

基于个人理解答题,如有错误请直接指出,不吝赐教。


查看完整回答
反对 回复 2019-04-03
  • 2 回答
  • 0 关注
  • 408 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信