javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行

How can javascript be a synchronous language and run asynchronously in browser and in node.js enviroment?

本文关键字:node 浏览器 js 环境 运行 异步 语言 何成 同步 一种 javascript      更新时间:2023-09-26

我的意思是实际的区别是什么?我知道Google v8引擎在浏览器和node.js环境中都对它进行了解释?那么我在这里错过了什么?同一个代码如何以不同的方式执行?

同一种语言怎么能同时同步和异步呢?

javascript如何在浏览器中同步运行,在Node.js环境中异步运行?

事实并非如此。它在两种环境中都以单线程*、事件驱动的方式运行。当处理一个任务(例如,对发生的事情做出响应)时,该线程会同步执行任务。它可以做的一件事(在这两种环境中)是安排在当前任务完成后处理异步回调。

同一种语言怎么能同时同步和异步呢?

同步处理与异步处理主要是环境问题,而不是语言问题。有些语言的功能旨在使其更容易在多线程环境中使用(与同步/异步语言不同),有些语言可能内置了异步功能,但如果该语言没有(JavaScript也没有),则环境可以提供这些功能。

例如:JavaScript没有内置的方法来安排异步回调**。但浏览器提供的setTimeout函数正是这样做的(Node也提供nextTick和其他各种功能)。


*除了浏览器可以通过web工作程序启动多个线程之外(节点代码可以生成子进程)。

**ES6的承诺将改变这一现状解析拒绝ES6承诺本质上是一种异步操作(此处、此处和此处详细介绍)。