我是异步编程的新手,我一直在努力理解回调。我无法理解我做错了什么?回调根本不会运行。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/movies');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to mongodb.');
var movieSchema = mongoose.Schema({
title: String,
release_date: Date,
cast: Array
});
movieSchema.methods.AddMovie = function AddMovie(callback) {
console.log(this.title);
};
var Movie = mongoose.model('Movies', movieSchema);
var revenant = new Movie({
title: 'The Revenant',
release_date: new Date('2015-12-25'),
cast: ['leonardo dicaprio']
});
var callback = function(err, data) {
if (err) console.error(err);
else console.log(data);
}
revenant.AddMovie(callback);
});
答案 0 :(得分:0)
您致电revenant.AddMovie
并传入您定义的callback
功能。您进一步定义AddMovie
并接受callback
作为参数,但是您实际上并没有实际调用它。您似乎只是在调用AddMovie
时将电影标题记录到控制台。实际上你没有对传入的回调函数做任何事情。
movieSchema.methods.AddMovie = function AddMovie(callback) {
console.log(this.title);
};
在那里你需要实际调用回调函数。像这样:
movieSchema.methods.AddMovie = function AddMovie(callback) {
if (someError) return callback(someError);
callback(null, data);
}
我在写回调和异步代码的那一天回复了this post。快速阅读。我尝试使用非常简单的例子。