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



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

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

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

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

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

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

这是如何工作的?

发生的情况是,当您调用

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

最新更新