我目前正在学习有关Node和JavaScript中的回调的一般信息,并对以下内容感到困惑:
var request = require('request'); request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // Show the HTML for the Google homepage. } })
我的问题是:请求函数如何知道回调中的每个参数/参数是什么?因为我可以有效地使用两个参数调用函数回调并跳过错误?例如,函数如何知道传递的第一个参数是响应而不是错误?
是否在运行时检查每个类型?谢谢。
编写请求API的程序员确定发送给回调的参数的顺序。在运行时没有类型检查。如果您仅在回调签名中提供两个参数,例如
function(response, body) {}
您仍然会收到错误对象和响应-仅在这种情况下,名为“ response”的变量将保存错误对象,而名为“ body”的变量将保存响应。您将跳过的输入将是您未提供的第三个输入,即正文。参数的名称没有区别,它们在函数签名中的位置决定了将为其分配什么值。
按照约定,在javascript回调中,回调的第一个参数通常表示错误对象。并非总是以这种方式编写的,但这是最佳实践。