[英]How to pass ADDITIONAL arguments to an existing callback function
我无法找到答案,尽管这应该是一个相对常见的问题。 所有其他问题似乎都与简单地将变量添加到空闭包有关。
我有一个回调,它需要两个参数; err
和docs
,我仍然需要,但还想添加一个额外的参数 `data.
db.findOne().exec(function (err, docs) {
// err is defined
// docs is defined
});
我需要传递data
,所以假设我可以这样做:
db.findOne().exec(function (err, docs, data) {
// err is defined
// docs is defined
}(data));
这不起作用。 所以,我尝试了以下方法:
db.findOne().exec(function (err, docs, data) {
// err is null
// docs is null
}(null, null, data));
这也杀死了原始变量err
和docs
。
那么,我该怎么做呢?
你可以简单地在回调中使用data
变量,只要这个变量是在外部作用域中定义的(就在调用db.findOne()
方法之前):
var data = ...
db.findOne().exec(function (err, docs) {
// err is defined
// docs is defined
// data is defined
});
您必须将您的函数包装在回调函数中。
如果你有这样的功能:
db.findOne().exec(function (err, docs) {
// err is defined
// docs is defined
});
您可以使用以下函数来传递附加参数:
db.findOne().exec(function (err, docs) {
var data={a:'a'};
yourFunction(err, docs, data);
});
function yourFunction(err, docs, data){
// access data here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.