Javascript 如何编写此方法以使回调参数有效?
这是npm的Twitter包中的一个方法Javascript 如何编写此方法以使回调参数有效?,javascript,node.js,Javascript,Node.js,这是npm的Twitter包中的一个方法 T.get('search/tweets', params, function(err, data, response) { if(!err){ // This is where the magic will happen } else { console.log(err); } }) 我知道通常你会写一个回调函数的方法 T.prototype.get = function(url, options, callb
T.get('search/tweets', params, function(err, data, response) {
if(!err){
// This is where the magic will happen
} else {
console.log(err);
}
})
我知道通常你会写一个回调函数的方法
T.prototype.get = function(url, options, callback) {
//code here
callback();
}
我的问题是如何将“err”、“data”和“response”值传递给回调函数。它是通过做以下事情来实现的吗
callback(error, returnedTweets, reponseObject);
是的,参数由回调调用方发送到回调,在您的示例中,回调调用方是
T.get()
的内部实现。因此,如果您在回调函数中得到三个参数,如函数(err、data、response).
,那么这是因为回调函数是通过三个参数调用的,这三个参数的类型与此匹配:
T.prototype.get = function(url, options, callback) {
//code here
callback(err, data, response);
}
传递的参数在本地命名并不重要。因此,在
T.get()
实现内部,这些参数可能有不同的名称:
T.prototype.get = function(url, options, callback) {
//code here
callback(error, returnedTweets, reponseObject);
}
传递给回调的是这些变量的值。它们在实现中的名称对回调本身没有意义
在此代码中声明回调时给它们的名称也不相关:
T.get('search/tweets', params, function(err, data, response) {
// callback implementation here
});
您可以为回调参数选择任何名称。回调参数是按特定顺序传递的,因此无论您在回调声明中对第一个参数命名什么,它都将具有调用回调时传递的第一个参数的值。Javascript中的参数是按顺序/位置,而不是按名称。例如,您可以这样命名它们:
T.get('search/tweets', params, function(arg1, arg2, arg3) {
// callback implementation here
});
而且,代码仍然可以正常工作,尽管可读性要低得多,因为只需知道arg1是错误值,arg2是数据等等。因此,大多数开发人员选择有意义的名称来帮助描述该参数中的预期内容。但是,回调参数的名称完全取决于您。您在帖子底部提出的问题的答案是:是的,这正是正在发生的事情。您是否尝试过查找该包的来源?是的,你应该找一条这样的线。