Javascript 回调未执行

Javascript 回调未执行,javascript,callback,Javascript,Callback,我是异步编程新手,我一直在尝试理解回调。我很难理解我做错了什么?回调根本不运行 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() {

我是异步编程新手,我一直在尝试理解回调。我很难理解我做错了什么?回调根本不运行

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);
});

调用
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);
}

我写回信的时候,我也在努力处理回调和异步代码。快速阅读一下。我尝试使用非常简单的示例。

调用
revenant.AddMovie
并传入定义的
回调
函数。您进一步定义了
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);
}

我写回信的时候,我也在努力处理回调和异步代码。快速阅读一下。我试着用非常简单的例子。

谢谢你的链接,这篇文章做得很好!谢谢你的链接和伟大的工作后!