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