setTimeout(()=>{ console.log('timer1') Promise.resolve().then(function() { ...
本文通过结合官方文档MDN和其他博客深入解析浏览器的事件循环机制,而NodeJS有另一套事件循环机制,不在本文讨论范围中。process.nextTick和setImmediate是NodeJS的API,所以本文也不予讨论。 首先,先了解几个概念。 Javascript到底是单线程还是多线程语言 Javascript是一门单线程语言。相信应该有不少朋友对于Javascript是单线程语言还有些疑 ...
2021-01-27 10:59 1 555 推荐指数:
setTimeout(()=>{ console.log('timer1') Promise.resolve().then(function() { ...
(本文从掘金小册整理) 首先介绍一下几个概念 进程与线程 相信大家经常会听到 JS 是单线程执行的,但是你是否疑惑过什么是线程? 讲到线程,那么肯定也得说一下进程。本质上来说,两个名词都是 C ...
制称为事件循环(Event Loop)。 为了更深刻的理解事件循环,我们先了解几个相关概念 单线程 ...
一、JavaScript是单线程单并发语言 什么是单线程 主程序只有一个线程,即同一时间片断内其只能执行单个任务。 为什么选择单线程? JavaScript的主要用途是与用户互动,以 ...
事件循环(event loop)过程: 一、执行同步(轮询)阶段: 1.同步代码,一行一行放在Call Stack(调用栈)执行 2.遇到异步,会先记录到Web APIs里,然后等待时机(定时器、网络请求等) 3.时机到了,就移动到Callback Queue(回调队列) 4. ...
1. 事件循环(event-loop)是什么? 总方针是先同步再异步,异步中先微任务,在宏任务。 macro-task(宏任务):setTimeout,setInterval micro-task(微任务):Promise.then/catch,process.nextTick ...
JavaScript 是单线程单并发语言 什么是单线程 主程序只有一个线程,即同一时间片断内其只能执行单个任务。 为什么选择单线程? JavaScript的主要用途是与用户互动,以及 ...
。 (2)事件队列(任务队列): 主线程之外,还存在一个"任务队列"(task queue)。当遇到异步任务 ...