我理解将一个函数传递给另一个函数作为回调并让它执行,但我不理解这样做的最佳实现.我正在寻找一个非常基本的例子,像这样:
var myCallBackExample = {
myFirstFunction : function( param1, param2, callback ) {
// Do something with param1 and param2.
if ( arguments.length == 3 ) {
// Execute callback function.
// What is the "best" way to do this?
}
},
mySecondFunction : function() {
myFirstFunction( false, true, function() {
// When this anonymous function is called, execute it.
});
}
};
Run Code Online (Sandbox Code Playgroud)
在myFirstFunction中,如果我确实返回了新的callback(),那么它可以工作并执行匿名函数,但这对我来说似乎不是正确的方法.
我正在尝试在数据库上运行mongoose.findOne,但是得到了意外的结果。我的查询是
const User = mongoose.model('User', {name: String, email: String, passwordHash: String, validation: String, validationCode: String, favorites: Array })
exports.findUser = function findUser(email){
const foundUser = User.findOne({email: email}, function(err, userObj){
if(err){
return err
} else if (userObj){
return userObj
} else{
return null
}
})
return foundUser
}
Run Code Online (Sandbox Code Playgroud)
但是,这将返回以下数据(看似随机?),并且没有我请求的任何数据
Query {
_mongooseOptions: {},
mongooseCollection:
NativeCollection {
collection: null,
opts: { bufferCommands: true, capped: false },
name: 'users',
collectionName: 'users',
conn:
NativeConnection {
base: [Object],
collections: [Object],
models: [Object],
config: [Object],
replica: …Run Code Online (Sandbox Code Playgroud) 我的代码:
function myFunc(callback) { /*do stuff*/
$('div').one('mouseover', function () {
alert('mouseover');
callback;
});
}
$("div").click(function () {
alert('clicked');
myFunc(function () {
alert('Callback');
});
});
Run Code Online (Sandbox Code Playgroud)
但是,callback不执行,控制台中也没有错误.我怎样才能做到这一点?