JavaScript和单线程

前端之家收集整理的这篇文章主要介绍了JavaScript和单线程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我总是听说JavaScript是单线程的;当执行JavaScript时,它们都在同一个全局mosh坑中运行,所有这些都在一个线程中.

虽然这可能是真的,那个单一的执行线程可能会产生新的线程,异步请求数据回主线程,对吗?例如,当发送XMLHttpRequest时,浏览器是否创建了执行HTTP事务的新线程,然后在XMLHttpRequest返回时在主线程中调用回调?

那么计时器–setTimeout和setInterval呢?这些如何运作?

这种单线程是语言的结果吗?是什么阻止了JavaScript在新的Web Workers草案之前进行多线程执行?

最佳答案
有关javascript事件队列如何工作的说明,请参阅this post,包括它与ajax调用的关系.

浏览器当然使用至少一个本机OS线程/进程来处理OS的实际接口以检索系统事件(鼠标,键盘,定时器,网络事件等).是否存在多个本机OS级别线程取决于浏览器实现,并且与Javascript行为无关.来自外部世界的所有事件都通过javascript事件队列,并且在完成先前的javascript执行线程并且然后从给予javascript引擎的队列中拉出下一个事件之前不处理任何事件.

猜你在找的JavaScript相关文章