繁体   English   中英

如何将附加参数传递给现有的回调函数

[英]How to pass ADDITIONAL arguments to an existing callback function

我无法找到答案,尽管这应该是一个相对常见的问题。 所有其他问题似乎都与简单地将变量添加到空闭包有关。

我有一个回调,它需要两个参数; errdocs ,我仍然需要,但还想添加一个额外的参数 `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));

这也杀死了原始变量errdocs

那么,我该怎么做呢?

你可以简单地在回调中使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM