JavaScript中的Event Loop是如何处理异步事件和回调函数的机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计932个文字,预计阅读时间需要4分钟。
1. JavaScript 单线程模型+单线程模型意味着,JavaScript 只能在单个线程上运行,也就是说,它一次只能执行一个任务。这意味着其他任务必须等待当前任务完成后才能执行。注意:尽管 JavaScript 只能在单个线程上运行,但并不意味着它不能并发处理任务。
1.单线程模型
单线程模型指的是,JavaScript只能在一个线程上运行,也就是说只能同时指向一个任务,其他任务都必须在后面排队等待。注意:虽然JavaScript只在一个线程上运行,但并不代码JavaScript引擎只有一个线程。事实上,JavaScript引擎有多个线程,单个脚本只能在一个线程上运行(主线程),其他线程都是在后台配合。
JavaScript为什么要采用单线程,而不是多线程?
不想让浏览器变得复杂(避免复杂性),因为多线程需要共享资源、且可能修改彼此运行的结果。
该模式会导致的问题?
如果单个任务耗时长,会拖延整个程序的执行,可能导致浏览器无响应(假死)
JavaScript是如何解决这个问题的?
因为单线程的原因,CPU很多时候都闲着的,并且因为IO操作(输入输出)很慢(比如Ajax操作从网络读取数据),这时CPU可以完全不管IO操作,挂起等待中的任务,先运行排在后面的任务。等到IO操作返回了结果,再回过头,把挂起的任务继续执行下去。
本文共计932个文字,预计阅读时间需要4分钟。
1. JavaScript 单线程模型+单线程模型意味着,JavaScript 只能在单个线程上运行,也就是说,它一次只能执行一个任务。这意味着其他任务必须等待当前任务完成后才能执行。注意:尽管 JavaScript 只能在单个线程上运行,但并不意味着它不能并发处理任务。
1.单线程模型
单线程模型指的是,JavaScript只能在一个线程上运行,也就是说只能同时指向一个任务,其他任务都必须在后面排队等待。注意:虽然JavaScript只在一个线程上运行,但并不代码JavaScript引擎只有一个线程。事实上,JavaScript引擎有多个线程,单个脚本只能在一个线程上运行(主线程),其他线程都是在后台配合。
JavaScript为什么要采用单线程,而不是多线程?
不想让浏览器变得复杂(避免复杂性),因为多线程需要共享资源、且可能修改彼此运行的结果。
该模式会导致的问题?
如果单个任务耗时长,会拖延整个程序的执行,可能导致浏览器无响应(假死)
JavaScript是如何解决这个问题的?
因为单线程的原因,CPU很多时候都闲着的,并且因为IO操作(输入输出)很慢(比如Ajax操作从网络读取数据),这时CPU可以完全不管IO操作,挂起等待中的任务,先运行排在后面的任务。等到IO操作返回了结果,再回过头,把挂起的任务继续执行下去。

