“ .then(function(a){return a;})”对诺言是否无效?

使用Bluebird的承诺。有很多例子看起来像这样:

var getEvents = function(participantId) {  

return new models.Participant()

.query({where: {id: participantId}})

.fetch({withRelated: ['events'], require: true})

.then(function(model) {

return model;

});

};

我对诺言仍然不满意,但从到目前为止的经验来看,这似乎很奇怪。我的问题是,上面的函数与fetch()直接返回并省略最终函数完全相同then()

var getEvents = function(participantId) {  

return new models.Participant()

.query({where: {id: participantId}})

.fetch({withRelated: ['events'], require: true});

};

也就是说,它仍然做同样的事情,返回相同的承诺,可以用相同的方式调用,等等?

据我了解,传递给函数的参数将then获取链中先前promise的返回值。因此,在我看来.then(function (a) { return a;

}),总的来说,这只是一个禁忌。对?

如果它们不相同,有什么区别?这是怎么回事,为什么作者这么写呢?

回答:

在我看来,这.then(function (a) { return a; })只是一个禁忌。对?

回答:

它是无用的,应该省略。

这是怎么回事,为什么作者这么写呢?

这是一个错误。否则作者不了解诺言。

1:如果不一样,有什么区别?

与往常一样,有一些极端情况。真的很奇怪。没有人应该使用它(无需大量评论):

a)它返回一个新的Promise实例,一个独特的对象,以避免共享。但是,.then()也是如此。

b)a再次测试其适用性。如果自实现以来突然变成了诺言,现在将等待它。这当然是可怕的。

以上是 “ .then(function(a){return a;})”对诺言是否无效? 的全部内容, 来源链接: utcz.com/qa/407883.html

回到顶部