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

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

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

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

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

这里应该涉及到一个“事件触发线程”的概念。推荐阅读从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理可能可以解决你的疑惑。
                            
查看完整回答
反对 回复 2019-05-21
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

主线程在执行到异步调用时,将异步的代码挂在浏览器内核提供的异步线程去执行,而主线程继续执行同步代码。
异步线程执行完成后将回调放在消息队列中。
主线程通在消息队列中通过事件循环从消息队列中取出异步的回调再去执行。
比如ajax请求。js引擎执行到ajax请求时,由浏览器新开线程来执行这个XMLHttpRequest,而js引擎提供的主线程,会去消息队列中循环查找回调来执行。
基于个人理解答题,如有错误请直接指出,不吝赐教。
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 816 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号