我正在学习猫鼬和回调。我认为使用回调代替回报,因此它是回调或回报,但不是两者。然后我偶然发现,return
和cb
在同一行。为什么Mongoose的JavaScript在同一行中有回调和回调?
// define a schema
var animalSchema = new Schema({ name: String, type: String });
// assign a function to the "methods" object of our animalSchema
animalSchema.methods.findSimilarTypes = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
}
var Animal = mongoose.model('Animal', animalSchema);
var dog = new Animal({ type: 'dog' });
dog.findSimilarTypes(function (err, dogs) {
console.log(dogs); // woof
});
我Google了一圈,发现这太问题既具有回调的两个答案,但one without返回,并one with。他们都是对的吗?如果是这样,什么时候应该用回调函数返回?
没有返回:
animalSchema.statics.findByName = function (name, cb) {
this.find({ name: new RegExp(name, 'i') }, cb);
}
有了回报:
animalSchema.methods.findSimilarTypes = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
}
难道说,它从未伤害投入与回报的回调相处? – Melissa
是的,这是正确的。 – ryder