对于挂起的异步任务执行的问题

来源:8-5 event loop 的执行过程

godlanbo

2020-06-10

我对于js异步的执行机制算是差不多清楚的,但是我一直有个疑惑,当js主线程执行到异步任务,将异步任务挂起之后,是在哪里执行这些异步任务的准备过程呢?(比如定时器的计时,网络请求的过程),因为异步任务需要准备就绪之后再添加到消息队列等待事件循环去执行,那么异步任务准备就绪这个过程,是谁在执行,js不是是单线程嘛。
我的理解是js执行引擎是单线程的,但是定时器和网络请求或者一些webApi这些异步任务,是交给Node环境或是浏览器的其他线程做的,然后其他线程完成这些异步任务的准备工作后,再将这个任务返回添加到js执行引擎的消息队列中。

写回答

1回答

双越

2020-06-10

js 代码是单线程执行,但 js 引擎可不是单线程的。这一点你要搞明白。

1
7
双越
回复
_zion_
Promise 本来就是 js 引擎搞定的,否则也不会出现在 ES6 的语法规范里。 你像宏任务 ajax 等,就没有出现在 ES6 语法规范里,它也不是个语法。
2020-12-14
共7条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程