猿问

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

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

慕婉清6462132
浏览 409回答 2
2回答

拉风的咖菲猫

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

富国沪深

主线程在执行到异步调用时,将异步的代码挂在浏览器内核提供的异步线程去执行,而主线程继续执行同步代码。异步线程执行完成后将回调放在消息队列中。主线程通在消息队列中通过事件循环从消息队列中取出异步的回调再去执行。比如ajax请求。js引擎执行到ajax请求时,由浏览器新开线程来执行这个XMLHttpRequest,而js引擎提供的主线程,会去消息队列中循环查找回调来执行。基于个人理解答题,如有错误请直接指出,不吝赐教。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答