所以,为了避免复杂性,从一诞生,JavaScript就是单线程的,这已经是这门语言的核心特征,将来也不会改变
而单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个,但浏览器是多线程的...既然js是单线程的,那么他是如何是实现异步操作的?我们把这些任务称为:异步任务 同一段时间内可以做多个任务,例如
setTimeout
setInterval
ajax
......首先我们知道了JS里的一种任务分类方式,就是将任务分为: 同步任务和异步任务
虽然JS是单线程的,但是浏览器的内核却是多线程的,在浏览器的内核中不同的异步操作由不同的浏览器内核模块调度执行,异步任务操作会将相关回调添加到任务队列中...按照这种分类方式:JS的执行机制是
首先判断js代码是同步还是异步,不停的检查调用栈中是否有任务需要执行,如果没有,就检查任务队列,从中弹出一个任务,放入栈中,如此往复循环,要是同步就进入主进程,异步就进入事件表...一旦遇到异步的任务,会将它安排到一个任务队列中挂起状态,浏览器重新开一个新的线程单独处理它,它并不会阻塞主线程的代码,当主线程任务处理完了,有空闲时,此时,等待执行异步任务队列中的事情
异步处理在js