关于javascript:回调函数的参数如何依赖于排序?

How are callback functions' parameters dependent on ordering?

假设我有一个我在Javascript中等待的事件,我们将会有这样的事情:

1
2
3
fileSystem.readFile('done', function(err, data){
    //do something with the file
});

在这种情况下,参数错误和数据是任意命名和排序的,因此它们可能是另一种顺序

1
function(data, err) {/*do something*/ }

数据如何传递数据,错误传递任何错误?

我注意到这种模式在各种各样的javascript回调中无处不在,对我来说,如果函数参数以可预测的顺序传递,而不遵循一些我不应该注意的约定,这在很大程度上是个谜。

这是如何运作的?


当你打电话时会发生什么

1
2
3
fileSystem.readFile('done', function(err, data){
    //do something with the file
});

作为第二个参数传递的函数将被保存以供以后使用(当文件读完时)。 然后它将调用您为您传递的函数,可能的错误值作为第一个参数,文件内容作为第二个参数。

1
2
3
4
5
6
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),它们仍将分别包含错误和文件内容值。