如何回调函数'参数依赖于排序?

时间:2014-12-28 22:10:54

标签: javascript parameters callback functional-programming

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

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

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

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

数据如何传递数据并且错误传递任何错误?

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

这是如何运作的?

1 个答案:

答案 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),它们仍将分别包含错误和文件内容值。