上图能否解释JavaScript中,运用回调函数或事件监听器实现异步编程时的原理?即JS引擎是单线程的,当遇到异步任务时,浏览器会调用其他线程来执行异步任务,当辅助线程得到结果时,将相应的回到函数推送到callback queue中,当主线程的同步任务执行完毕后,通过event loop不断的将callback queue中的回调函数推入到主线程,从而完成相应的异步任务?主线程有自己的执行环境栈,那么辅助线程都有自己的执行环境栈吗?ES6中Generator实现的异步编程,其原理是对协程的实现,那协程是什么意思?在上图中有和协程相对应的地方吗?需要辅助线程吗?看了很多文章,但零零散散的,感觉越看越糊涂,希望大牛可以指点一下....谢谢...
lz的图解释的还算清楚了。不过可能在理解上面会稍微复杂一些了。
异步任务,例如ajax请求,各种请求资源,延时操作等等,其实都是在辅助线程上进行监听,如果完成,则进入任务队列,简化一下其实可以直接理解为主线程的栈,然后顺序执行。
辅助线程其实就只是一个监听返回的功能。
ES6中的Generator的实现,类似于开了多进程,但是依然同时只能进行一个进程,与辅助线程不同。
用汽车和公路举个例子。