前端之家收集整理的这篇文章主要介绍了
JavaScript和单线程,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我总是听说JavaScript是单线程的;当执行JavaScript时,它们都在同一个全局mosh坑中运行,所有这些都在一个线程中.
虽然这可能是真的,那个单一的执行线程可能会产生新的线程,异步请求数据回主线程,对吗?例如,当发送XMLHttpRequest时,浏览器是否创建了执行HTTP事务的新线程,然后在XMLHttpRequest返回时在主线程中调用回调?
那么计时器–setTimeout和setInterval呢?这些如何运作?
这种单线程是语言的结果吗?是什么阻止了JavaScript在新的Web Workers草案之前进行多线程执行?
最佳答案
有关javascript事件队列如何工作的说明,请参阅
this post,
包括它与ajax
调用的关系.
浏览器当然使用至少一个本机OS线程/进程来处理OS的实际接口以检索系统事件(鼠标,键盘,定时器,网络事件等).是否存在多个本机OS级别线程取决于浏览器实现,并且与Javascript行为无关.来自外部世界的所有事件都通过javascript事件队列,并且在完成先前的javascript执行线程并且然后从给予javascript引擎的队列中拉出下一个事件之前不处理任何事件.