📜  哪个是通常传递给 Node.js 回调处理程序的第一个参数?

📅  最后修改于: 2022-05-13 01:56:38.200000             🧑  作者: Mango

哪个是通常传递给 Node.js 回调处理程序的第一个参数?

Node.js 中的回调处理函数是一种在特定操作完成后处理某事的方法。这是处理异步代码的方法之一,它需要很长时间才能产生结果,因此我们可以调用回调处理程序,如果有错误,以及异步操作的结果。

回调处理函数遵循错误优先约定,即:

  • 回调处理程序的第一个参数应该是错误,第二个参数可以是操作的结果。
  • 如果有错误调用回调函数,我们可以像callback(err)一样调用它,否则我们可以像callback(null, result)一样调用它。

句法:

const func = (arg1, agr2, ..., argN, callback) => {
    // code logic
}

func(a, b, ..., n, (err, result) => {
    // code logic
})

项目设置

第 1 步:如果您还没有安装 Node.js。

第 2 步:为您的项目创建一个文件夹,然后将cd (更改目录)放入其中。在该文件夹中创建一个名为 app.js 的新文件。现在,使用以下命令使用默认配置初始化一个新的 Node.js 项目。

npm init -y

项目结构:按照这些步骤操作后,您的项目结构将如下所示。

示例:在下面提到的代码示例中,我们创建了一个执行除法运算的函数。为了模拟异步操作,我们使用了 setTimeout() 方法,该方法在一秒后调用回调处理程序。当除数为零时,回调处理程序以错误实例作为唯一参数调用,否则以 null 作为第一个参数和除法的结果作为第二个参数调用回调。

app.js
const divide = (a, b, callback) => {
  setTimeout(() => {
    if (b === 0) {
      callback(new Error('Division by zero error'));
    } else {
      callback(null, a / b);
    }
  }, 1000);
};
  
// Our callback handler expects error
// as first argument and the result 
// of division as second argument.
divide(5, 2, (err, result) => {
  // We check if the error exists then we
  // print the error message and return
  if (err) {
    return console.log(err.message);
  }
  
  // We print the result if there is no error
  console.log(`The result of division is ${result}`);
});
  
// In this cases our callback handler
// will be called with an error Instance
// as the divisor is zero
divide(5, 0, (err, result) => {
  if (err) {
    return console.log(err.message);
  }
  
  console.log(`The result of division is ${result}`);
});


运行应用程序的步骤:您可以在命令行上使用以下命令执行 app.js 文件。

node app.js

输出: