我目前正在学习一般的 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.
}
})
我的问题是:请求函数如何知道回调中的每个参数/参数是什么?因为我可以用两个参数有效地调用函数回调并跳过错误?例如,函数如何知道传递的第一个参数是响应而不是错误?
它会在运行时检查每个类型吗?谢谢。
原文由 Joshua H 发布,翻译遵循 CC BY-SA 4.0 许可协议
编写请求 API 的程序员决定发送到回调的参数的顺序。运行时没有类型检查。如果您在回调签名中仅提供两个参数,例如
function(response, body) {}
您仍然会收到错误对象和响应——只是在这种情况下,名为“response”的变量将保存错误对象,而名为“body”的变量将保存响应。您将跳过的输入将是您没有提供的第三个输入,即正文。参数的 名称 没有区别,它们在函数签名中的位置决定了它们将被分配的值。
按照惯例,在 javascript 回调中,回调的第一个参数通常表示错误对象。它并不 总是这样 写,但它是一种最佳实践。