end*_*cat 5 javascript asynchronous callback node.js
所以我对 function(err, data) 回调的工作方式感到困惑,第一个参数总是错误处理程序吗?
如果你有函数 (x, y, z, a, b, c) 之类的东西,剩下的参数呢?
fs.readFile 中的数据如何从最上面一行代码传递到最下面一行代码?或者换句话说, fs.readFile 的输出如何放入 data 参数中?
fs.readFile(pathToFile, function (err, **data**) {
bufferString = **data**.toString();
Run Code Online (Sandbox Code Playgroud)
我可以用函数 (x, y) 和函数 (x, y, z, a, b, c) 替换函数 (err, 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);
Run Code Online (Sandbox Code Playgroud)
回调的调用者(readFile在本例中是方法)决定将哪些参数传递给回调。您需要声明您的回调以匹配readFile它将传递给回调的内容。您可以为参数命名任何您想要的名称(您使用的名称无关紧要),但它们将按照readFile决定的顺序获取值。
在这种情况下,fs.readFile()使用代码中的两个参数调用回调,如callback(err, data).
这是 node.js 文档中的一个示例:
fs.readFile('/etc/passwd', function (err, data) {
if (err) throw err;
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17563 次 |
| 最近记录: |