文章目录
前言
在JavaScript中,异步是一个重要的内容,该篇从基础的进程、线程开始,系统的了解异步。
一、理解异步
先浏览学习资料,对进程、线程和浏览器中的进程线程有一定的认识。
1. 学习资料链接
序号 | 资料名称 | 链接 | 备注 |
---|---|---|---|
1 | 官方图解:Chrome 快是有原因的,现代浏览器的多进程架构! | https://juejin.im/post/5bd7c761518825292d6b0217 | 学习这篇文章可以了解浏览器的架构以及每个模块负责的工作,宏观上了解浏览器的工作原理。 |
2 | 进程与线程的一个简单解释 | https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html | 文章生动形象的比喻了进程和线程,将抽象的概念形象化了 |
3 | 浏览器进程?线程?傻傻分不清楚! | https://imweb.io/topic/58e3bfa845e5c13468f567d5 | 重点讲解线程、进程的区别,以及浏览器内核的多线程 |
4 | 定时器标准 | https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers | 规范对定时器的说明 |
2. 同步函数 vs 异步函数
1. 同步函数
如果一个函数是同步执行,那么当这个函数被调用时不会立即返回,只有当该函数要做的事情全部执行完,才会返回。
同步函数处理机制:
当一个线程调用一个同步函数时(例如:该函数用于完成写文件任务),如果该函数没有立即完成规定的操作,则该操作会导致该调用线程的挂起(将CPU的使用权交给系统,让系统分配给其他线程使用),直到该同步函数规定的操作完成,该调用线程才会被重新调度。
阻塞:由于在浏览器系统中,JavaScript是单线程的