javascript - 了解函数(错误、数据)回调

标签 javascript node.js asynchronous callback

所以我对 function(err, data) 回调的工作方式感到困惑,第一个参数总是错误处理程序吗?

如果你有函数 (x, y, z, a, b, c) 之类的东西,剩下的参数怎么办?

fs.readFile 的数据如何从最上面一行代码传递到最下面一行代码?或者换句话说,如何将 fs.readFile 的输出放入数据参数?

fs.readFile(pathToFile, function (err, **data**) {
    bufferString = **data**.toString();

我可以用函数 (x, y) 和函数 (x, y, z, a, b, c) 替换函数 (err, data)

但是只有第二个参数有效(data 和 y),这只是 javascript 回调的语法吗?

例如,这是异步读取文件并打印出给定文件的行数的工作代码:

var fs = require('fs');
var pathToFile = process.argv[2];
var bufferString, bufferStringSplit;

function counter(callback) {
  fs.readFile(pathToFile, function (err, data) {
    bufferString = data.toString();
    bufferStringSplit = bufferString.split('\n');
    callback();
  });
}

function logMyNumber() {
  console.log(bufferStringSplit.length-1);
}

counter(logMyNumber);

最佳答案

回调的调用者(在本例中是 readFile 方法)决定传递给回调的参数。您需要声明您的回调以匹配 readFile 所说的它将传递给回调的内容。您可以随意命名参数(您使用的名称无关紧要),但它们将按照 readFile 决定的顺序获取值。

在这种情况下,fs.readFile() 使用代码中的两个参数调用回调,如 callback(err, data)

这是来自 node.js 文档的示例:

fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});

关于javascript - 了解函数(错误、数据)回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647832/

相关文章:

javascript - Browserify 与已经 browserified 文件

javascript - 异或字符串 : JS vs PHP

Node.js/Mongoose/按顺序排序并显示

javascript - POST请求后如何刷新表单页面?

javascript - 如何在 Neo4J Node.Js 驱动程序中打开/关闭驱动程序和 session ?

javascript - 在异步 Mocha 测试中将 Assets 放在哪里

javascript - 更改联系表的操作

javascript - kendo javascript t.find 不是一个函数

javascript - AngularJS REST 资源 - 刷新查询

android - RxJava2 : Unable to handle exception for asynchronous callback using retryWhen