首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JavaScript不总是异步的?

为什么JavaScript不总是异步的?
EN

Software Engineering用户
提问于 2021-04-04 17:12:45
回答 1查看 154关注 0票数 -3

在JS中,代码运行单线程,这就是为什么异步是必要的。我不能使用像result = someRequest()这样的代码,相反,我需要给它一个回调someRequest(resultCallback)或者编写一个承诺的result = await someRequest()

但是为什么语言是这样设计的呢?如果一切都是默认等待,那岂不是简单得多吗?对于并行运行函数(如当前的Promise.all(...)),我们将使用类似的WebWorkers或Thread.spawn(()=>{...})。但是,在我看来,这样的代码很容易被这样的代码所忽略:

代码语言:javascript
运行
复制
const data = [1,2,3].map(v =>
    fetch(v).json())

代码语言:javascript
运行
复制
console.log(1)
sleep(1000)
console.log(2)

我的观点是,sleep(1000)究竟是真正挂起整个线程,还是它是非阻塞的,这是内部逻辑,而且大多数情况与程序员无关。与Rust相反的是,您总是需要积极地决定或反对产生额外的线程。那么,我们为什么要费心于特殊的语法呢?

如果我没有遗漏任何东西,为什么没有通用的JS预处理程序呢?它需要用await作为所有的前缀,重写(除其他外)所有的数组处理函数,比如.map()

谢谢!

EN

回答 1

Software Engineering用户

发布于 2021-04-04 17:19:37

但是为什么语言是这样设计的呢?

因为JavaScript只是介于浏览器和运行在JavaScript中的适当代码之间的一小部分胶水代码。它不需要任何类似异步代码的东西,因为它所做的一切都是在一秒内完成的。

现在,历史并没有这样做,但是如果你问“为什么语言是这样设计的”,你就不能忽视语言的最初目的。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/425103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档