JavaScript高级(十八)---进程和线程,宏任务和微任务

进程和线程

进程(process):计算机已经运行的程序,是操作系统管理程序的一种方式,我们可以认为,启动一个应用程序,就会默认启动一个进程(也可能是多个进程)。

线程(thread):操作系统能够运行运算调度的最小单位 ,通常情况下它被包含在进程中 ,每一个进程中 都至少启动一个线程来执行应用程序的代码,这个线程被称为主线程

宏任务微任务

宏任务队列(macrotask queue):ajax、setTimeout、setInterval、DOM监听、UI Rendering等

微任务队列(microtask queue):Promise的then回调、 Mutation Observer API、queueMicrotask()等

面试题:

javascript 复制代码
setTimeout(function () {
  console.log("setTimeout1");
  new Promise(function (resolve) {
    resolve();
  }).then(function () {
    new Promise(function (resolve) {
      resolve();
    }).then(function () {
      console.log("then4");
    });
    console.log("then2");
  });
});

new Promise(function (resolve) {
  console.log("promise1");
  resolve();
}).then(function () {
  console.log("then1");
});

setTimeout(function () {
  console.log("setTimeout2");
});

console.log(2);

queueMicrotask(() => {
  console.log("queueMicrotask1")
});

new Promise(function (resolve) {
  resolve();
}).then(function () {
  console.log("then3");
});
相关推荐
じ☆ve 清风°8 分钟前
滑动窗口算法详解与C++实现
开发语言·c++·算法
繁依Fanyi9 分钟前
用 UniApp 构建习惯打卡 App —— HabitLoop 开发记
javascript·uni-app·codebuddy首席试玩官
东锋1.312 分钟前
前端动画库 Anime.js 的V4 版本,兼容 Vue、React
前端·javascript·vue.js
苕皮蓝牙土豆13 分钟前
C++ map & multimap 容器:赋值、排序、大小与删除操作
开发语言·c++
Villiam_AY20 分钟前
Go 后端中双 token 的实现模板
开发语言·后端·golang
DjangoJason26 分钟前
计算机网络 : Socket编程
linux·服务器·开发语言·笔记·计算机网络
映秀小子29 分钟前
C语言链表的操作
c语言·开发语言·链表
救救孩子把43 分钟前
Mac 环境下 JDK 版本切换全指南
java·开发语言·macos
我们的五年1 小时前
【Qt】Qt常见控件的相关知识点
开发语言·qt
孙同学_1 小时前
【C++】map和set的使用
开发语言·c++