- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,javascript 要么在浏览器中运行,要么作为 Node.js 中的后端运行。
浏览器或 Node.js,根据您运行 JavaScript 的位置,将通过 Web API 或 C++ API 处理阻塞运行时的函数(即网络调用、图像渲染等),然后将它们发送到事件循环并最终将它们合并到 JavaScript 运行的单个线程中。
我不明白的是,当我谷歌“javascript是同步还是异步”时,答案是javascript是异步的。
但是这是真的吗? Javascript 是异步的,因为浏览器或 Node.js 后端中的 Web API 或 C++ API 在幕后创建了线程,但 javascript 本身并不是异步的?
如果 javascript 只有一个线程,那它一定是一种同步语言吗?
最佳答案
Javascript(在浏览器和 Node.js 中实现)是一个事件驱动系统。
这意味着它与非阻塞异步 I/O 一起使用时效果最佳,可以为您提供与事件驱动系统协调的最佳体验和功能。这不一定是 Javascript 语言本身所固有的(您可以制作一个除了阻塞 I/O 之外什么都没有的 Javascript 版本),但是 Javascript 的所有流行实现都依赖于事件队列并依赖于异步 I/O 工作与事件队列协调以提供有用的编程环境。
直到最近,Javascript 还没有有用的线程和有用的线程同步工具来使具有阻塞 I/O 的多线程系统实用或有用。现在浏览器和 Node.js 中都有线程,尽管 Node.js 中的线程相当繁重(V8 解释器的全新实例、单独的堆等......),因此它们不一定会提高性能与内置线程作为更多固有功能的系统竞争。另外,Javascript 中的线程同步工具还处于开发初期。
What I don't understand is, when I google "is javascript synchronous or asynchronous", the answer is javascript is asynchronous.
当前流行的 Javascript 实现是在需要异步 I/O 才能提高工作效率的环境中。尽管我不知道有任何采用线程和阻塞 I/O 的实现,但纯语言本身并不一定需要它。
Javascript is asynchronous because of the web API's or c++ API in the browser are Node.js backend that makes threads under the hood, but javascript itself isn't asynchronous then?
Javascript 环境具有异步功能,因为 Javascript 与事件驱动环境配对,并与定时器和 I/O 等异步操作配合使用。因此,Javascript 实现和环境添加的其他内容的组合使环境能够编写可以使用异步功能的代码。请不要太关注关于 Javascript 本身是否异步的语义争论。据我所知,指定 Javascript 语言的 ECMAScript 规范并不一定要求这样做。我认为可能存在一种没有异步功能的纯 Javascript 语言的实现。但是,您在网络或书籍中阅读的大多数内容都会提到“Javascript”,而它们的真正含义是 Javascript 的流行实现,例如在 Web 浏览器或 Node.js 中。而且,坦率地说,这就是主要的相关内容,因为这是您实际可以使用 Javascript 的地方,除非您要构建自己的自定义环境。
If javascript only has one thread it must be a synchronous language?
尚不完全清楚你这个问题的意思。默认情况下(不调用 webWorkers 或工作线程)Javascript 在一个线程中运行您的 Javascript 代码,但它可以访问非阻塞 I/O 函数,这些函数允许操作与您的 Javascript 并行运行。在浏览器中,您可以对服务器进行 Ajax 调用,然后在 Ajax 调用完成时执行其他操作(进行一些计算、更新屏幕、更新屏幕上的时钟等...),然后在完成时执行其他操作通知从 Ajax 调用到达,您可以处理结果。虽然您的实际 Javascript 行是逐行同步运行的,但您可以启动异步操作,从而与 Javascript 执行并行运行一些操作。我将避免争论人们是否想将其称为“同步语言”。这只是一个语义论证。它的工作方式如下:在单个线程中运行 Javascript,但利用 native 操作系统功能与 Javascript 并行运行其他内容(例如网络操作)。
关于javascript - PURE Javascript 是同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62365318/
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 8 年前。 Improve
我的理解是,“纯 OCaml”是指 OCaml 中标准的所有内容,包括其非“纯”功能特性,而“纯功能”是指通常的属性:没有副作用、没有异常处理等。从这个意义上说,“纯 OCaml” 实现与使用 C 或
Haskell 被称为“纯函数式语言”。 在这种情况下“纯粹”是什么意思?这会给程序员带来什么后果? 最佳答案 在纯函数式语言中,您不能做任何有副作用的事情。 副作用意味着计算表达式会改变某些内部状态
这是接口(interface)契约类的一部分。 [Pure] public bool IsDirty() { throw new NotImplementedException(); } pu
我想问一下 pure-g 和 pure-g-r 有什么区别。我曾经认为响应式会让我的 div 在较低的分辨率下不会崩溃但是使用 pure-g 也帮助我实现了同样的效果,所以我对它们之间的正确区别感到困
在source code of GHC.Base , Applicative Maybe 定义为: instance Applicative Maybe where pure = Just
这个问题在这里已经有了答案: Purpose of (0, obj.method)(param1, param2) in Closure Compiler minified code (1 个回答)
如何向 React 发出信号,表明函数组件是“纯”的,相当于组件类的 React.PureComponent ? function C(props) { return {props.n} } 没有
已阅读官方React documentation ,我遇到过this关于PureComponent: Furthermore, React.PureComponent’s shouldComponen
我有以下代码片段,我想知道它是纯 C 还是包含一些 C++ 元素。这个问题源于我认为它只是 C,但有些编译器不接受代码。 // User struct derived from Function
一个简单的问题。我应该如何在数据库中存储电话号码和电子邮件地址?只是像 email@email.com 这样的纯文本(或数字),还是用 key 对其进行编码更好(有点像密码在数据库中的保存方式)。在那
有人可以向我展示一个示例,说明我如何使用 purecss.io 来实现固定宽度/响应式设计,类似于 bootstrap 等 960 网格???? 流体宽度根本不适用于我的特定设计,这是我目前拥有的:
是否有一套通用规则/指南可以帮助您了解何时更喜欢pragma Pure,pragma Preelaborate或其他什么东西? standard (Ada 2012)中提供的规则和定义有些繁琐,我很高
我试图区分包含字母字符数据的单元格和数字数据单元格。我使用 istext() 和 isnumber() 取得了部分成功。但是当出现字母数字字符时,这种逻辑就会失败。 我的目的是检测只有字母的单元格。包
在Clash官方网站上,有以下示例: >>> sampleN @System 4 (register 0 (pure (8 :: Signed 8))) 我知道什么是纯函数,但为什么这里有 this
据我了解,javascript 要么在浏览器中运行,要么作为 Node.js 中的后端运行。 浏览器或 Node.js,根据您运行 JavaScript 的位置,将通过 Web API 或 C++ A
class Applicative f => Monad f where return :: a -> f a (>>=) :: f a -> (a -> f b) ->
在我看来,Fortran 中所谓的纯函数对于那些使用函数式编程的人来说似乎不够纯粹。这是我的问题。假设我有以下代码: MODULE basics IMPLICIT NONE INTEGER,
在Clash官方网站上,有以下示例: >>> sampleN @System 4 (register 0 (pure (8 :: Signed 8))) 我知道什么是纯函数,但为什么这里有 this
我是一名优秀的程序员,十分优秀!