我正在阅读有关Bookshelf的教程。书架使用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
再次测试其适用性。如果自实现以来突然变成了诺言,现在将等待它。这当然是可怕的。
问题内容: 使用Bluebird的承诺。有很多例子看起来像这样: 我对诺言仍然不满意,但从到目前为止的经验来看,这似乎很奇怪。我的问题是,上面的函数与直接返回并省略最终函数完全相同: 也就是说,它仍然做同样的事情,返回相同的承诺,可以用相同的方式调用,等等? 据我了解,传递给函数的参数将获取链中先前promise的返回值。因此,在我看来,总的来说,这只是一个禁忌。对? 如果它们不相同,有什么区别?
问题内容: 我使用ES6 Promises来管理我的所有网络数据检索,并且在某些情况下需要强制取消它们。 基本上,这种情况是这样的:我在UI上进行了预先输入搜索,在该UI中,将请求委派给后端必须基于部分输入执行搜索。尽管此网络请求(#1)可能需要一点时间,但用户继续输入,最终会触发另一个后端调用(#2) 这里#2自然优先于#1,因此我想取消Promise包装请求#1。我已经在数据层中缓存了所有Pr
问题内容: 我已经将我的代码重组为,并建立了一个精彩的长期承诺链,其中包含多个回调。最后,我想返回一些复合值,并且需要访问多个中间promise结果。但是,序列中间的分辨率值不在上次回调的范围内,如何访问它们? 问题答案: 当然,语言设计者也意识到了这个问题。他们做了很多工作,异步函数提案最终使它成为了 ECMAScript 8 你不再需要单个调用或回调函数,因为在异步函数(被调用时返回一个Pro
问题内容: 关于这两个重要来源:NZakas- 承诺链中的归还承诺 和MDN承诺,我想提出以下问题: 每次我们从承诺履行处理程序返回值时,该值如何传递给从同一处理程序返回的新承诺? 例如, 在这个例子中,是一个承诺。也是来自履行处理程序的承诺。但是。取而代之的是神奇地解决(如何?),然后将该值传递给的实现处理程序。即使是这里的句子也令人困惑。 您能给我解释一下这到底是怎么回事吗?我对这个概念感到困
问题内容: 使用node.js版本7.7.2,我要执行一个异步函数,然后在第一个函数完成后执行另一个函数,如下所示: 问题是此安装程序打印“栏已被开除”,然后打印“foo将要解决”。我期望的是,bar将等待触发,直到foo返回的promise被解决为止。我是否误解了then()如何将回调在node.js事件循环中排队? 谢谢 问题答案: 如注释中所述,将一个函数传递给该函数,当该函数被调用时,将使
问题内容: 我遇到了以下SYBASE SQL: 该SQL的结果是 这看起来像是将HAVING条件应用于行而不是组。有人可以帮我指出描述这种情况的地方是Sybase 15.5文档吗?我所看到的只是“在团队中运作”。我在文档中看到的最接近的是: hading子句可以包括不在选择列表中且不在group by子句中的列或表达式。 (从这里引用)。 但是,他们没有完全解释当您这样做时会发生什么。 问题答案: