让我们说我有一个我在Javascript中等待的事件,我们将会有这样的事情:
fileSystem.readFile('done', function(err, data){
//do something with the file
});
在这种情况下,参数错误和数据是任意命名和排序的,因此它们可能是另一种顺序
function(data, err) {/*do something*/ }
数据如何传递数据并且错误传递任何错误?
我注意到这种模式在各种各样的javascript回调中无处不在,对我来说,如果函数参数以可预测的顺序传递,而不遵循一些我不能注意的约定,这在很大程度上是个谜。
这是如何运作的?
答案 0 :(得分:1)
当您致电
时会发生什么fileSystem.readFile('done', function(err, data){
//do something with the file
});
作为第二个参数传递的函数将被保存以供以后使用(当文件读完时)。然后它将调用您为您传递的函数,可能的错误值作为第一个参数,文件内容作为第二个参数。
readFile = function(event, callback) {
var error = null;
var fileContents = /* read file implementation. Maybe error will be assigned some value here */;
callback(error, fileContents);
}
当然,这只是一些伪代码来说明我的观点。
现在,您可以根据需要在函数function(err, data)
中命名参数,因为它们位于您定义的范围内。即使您交换名称function(data, err)
,它们仍将分别包含错误和文件内容值。