javascript - 是什么让 JavaScript 函数异步?
问题描述
我的目标是了解使它们异步的某些 JavaScript 函数究竟是什么。你可以有这样的功能:
function someRandomFunction () {
for (let i of everything) {
iterator++
something = true
hello = that + whatever
}
}
这个函数没有什么是异步的。它做了很多事情,但它做得非常快。
但是然后使用这样的 Node.js 函数:
fs.readFile('path/to/file', (err, data) => {
// do something
})
这个函数被声明为异步的。但这是为什么呢?背后的原因是什么?
是不是因为读取文件需要一定的时间才能完成,所以它是异步的?为什么在循环某些变量并进行某些计算时异步不是异步的?
解决方案
异步的“想法”意味着“我们已经将控制权交给了其他一些操作代码,我们不知道其他代码何时允许我们再次操作”。
因此,在您的底部示例中,您可以控制节点的文件系统操作以读取文件。我们不知道该文件有多大,因此无法预测完成所需的时间。因此,JavaScript 允许我们提供一个“回调”,当异步操作完成时会触发它。当回调被执行时,控制权返回给我们的代码。
上面的示例是同步的,因为您的代码保持对操作的控制,而 Javascript 本质上是同步执行代码的。
推荐阅读
- javascript - JavaScript井字游戏检查是否有人赢了
- react-jsonschema-forms - 键入 react-jsonform-schema 时未触发更改事件
- sql - 使用 GUID 返回单个值
- cplex - 如何使用 C++ 获得 Concert 技术中的约束系数
- java - JNI UnsatisfiedLinkError:动态链接库 (DLL) 初始化例程失败
- json - Removing nested JSON key from json file in python
- javascript - 如何在 d3js 中选择子节点(未知)
- c++ - Oracle Linux:mq_send 和 mq_receive 上的错误文件描述符
- javascript - 将多个线串组合到一个有效的多边形(Turf.js)
- c# - 将方法作为参数传递时无法推断类型参数