首页 > 解决方案 > 是什么让 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
})

这个函数被声明为异步的。但这是为什么呢?背后的原因是什么?

是不是因为读取文件需要一定的时间才能完成,所以它是异步的?为什么在循环某些变量并进行某些计算时异步不是异步的?

标签: javascriptnode.jsasynchronous

解决方案


异步的“想法”意味着“我们已经将控制权交给了其他一些操作代码,我们不知道其他代码何时允许我们再次操作”。

因此,在您的底部示例中,您可以控制节点的文件系统操作以读取文件。我们不知道该文件有多大,因此无法预测完成所需的时间。因此,JavaScript 允许我们提供一个“回调”,当异步操作完成时会触发它。当回调被执行时,控制权返回给我们的代码。

上面的示例是同步的,因为您的代码保持对操作的控制,而 Javascript 本质上是同步执行代码的。


推荐阅读