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);
}
我写回信的时候,我也在努力处理回调和异步代码。快速阅读一下。我试着用非常简单的例子。谢谢你的链接,这篇文章做得很好!谢谢你的链接和伟大的工作后!