[英]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.