在 Node.js 代码运行环境中,它为 JavaScript 代码的执行提供了一个主线程,通常我们所说的单线程指的就是这个主线程,主线程用来执行所有的同步代码。但是 Node.js 代码运行环境本身是由 C++ 开发的,在 Node.js 内部它依赖了一个叫做 libuv 的 c++ 库,在这个库中它维护了一个线程池,默认情况下在这个线程池中存储了 4 个线程,JavaScript 中的异步代码就是在这些线程中执行的,所以说JavaScript 代码的运行依靠了不止一个线程,所以 JavaScript 本质上还是多线程的。 JS 单线程 OR 多线程 ? - 图1 const crypto = require(‘crypto’) const NUM_REQUESTS = 2; for (let i = 0; i < NUM_REQUESTS; i++) { crypto.pbkdf2Sync(‘srcret’, ‘salt’, 10000, 512, ‘sha512’) }

    JS 单线程 OR 多线程 ? - 图2

    const crypto = require(‘crypto’) const NUM_REQUESTS = 2; for (let i = 0; i < NUM_REQUESTS; i++) { crypto.pbkdf2(‘srcret’, ‘salt’, 10000, 512, ‘sha512’) }

    JS 单线程 OR 多线程 ? - 图3