Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向现有回调函数传递附加参数_Javascript_Closures - Fatal编程技术网

Javascript 如何向现有回调函数传递附加参数

Javascript 如何向现有回调函数传递附加参数,javascript,closures,Javascript,Closures,我无法找到这个问题的答案,尽管这应该是一个比较普遍的问题。所有其他问题似乎都与向空闭包添加变量有关 我有一个回调函数,它接受两个参数err和docs,我仍然需要它们,但还想添加一个附加参数`data' db.findOne().exec(function (err, docs) { // err is defined // docs is defined }); 我需要同时传递数据,因此假设我可以这样做: db.findOne().exec(function (err, doc

我无法找到这个问题的答案,尽管这应该是一个比较普遍的问题。所有其他问题似乎都与向空闭包添加变量有关

我有一个回调函数,它接受两个参数
err
docs
,我仍然需要它们,但还想添加一个附加参数`data'

db.findOne().exec(function (err, docs) {
    // err is defined
    // docs is defined
});
我需要同时传递
数据
,因此假设我可以这样做:

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


那么,我该怎么做呢?

只要在外部作用域中定义了该变量(就在调用
db.findOne()
方法之前),就可以在回调中使用
data
变量:


您必须将函数包装在回调函数中

如果您具有以下功能:

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
}
函数(err、docs、data){
应该返回
内部函数
作为
.exec
db.findOne().exec(function (err, docs) {
var data={a:'a'};
    yourFunction(err, docs, data);
});

function yourFunction(err, docs, data){
// access data here
}