我正在阅读有关 Bookshelf 的教程。Bookshelf 使用 Bluebird Promise。有很多例子看起来像这样:
var getEvents = function(participantId) {
return new models.Participant()
.query({where: {id: participantId}})
.fetch({withRelated: ['events'], require: true})
.then(function(model) {
return model;
});
};
我仍然对 Promise 感到不舒服,但从我目前学到的东西来看,这似乎很奇怪。我的问题是,上述函数是否与fetch()
直接返回并离开 final完全相同then()
:
var getEvents = function(participantId) {
return new models.Participant()
.query({where: {id: participantId}})
.fetch({withRelated: ['events'], require: true});
};
也就是说,它仍然做同样的事情,返回同样的Promise,可以用同样的方式调用,等等?
据我了解,传递给函数的参数是then
获取链中前一个promise的返回值。所以,在我看来.then(function (a) { return a; })
,一般来说只是一个空操作。对?
如果它们不一样,那有什么区别?这是怎么回事,为什么作者要这样写?