使用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
再次测试其适用性。如果自实现以来突然变成了诺言,现在将等待它。这当然是可怕的。
问题内容: 我正在阅读有关Bookshelf的教程。书架使用Bluebird的承诺。有很多例子看起来像这样: 我仍然对诺言不满意,但是从到目前为止的经验来看,这似乎很奇怪。我的问题是,上面的函数与直接返回并省略最终函数完全相同: 也就是说,它仍然做同样的事情,返回相同的承诺,可以用相同的方式调用,等等? 据我了解,传递给函数的参数将获取链中先前promise的返回值。因此,在我看来,总的来说,这只
通过使用'defn'宏来定义函数。 以下是函数定义的一般语法。 语法 (Syntax) (defn functionname “optional documentation string” [arguments] (code block)) 函数可以有文档字符串,这很好地描述了函数实际执行的操作。 例子 (Example) 以下是一个函数的简单示例。 (ns clojure.e
必须调用函数才能执行它。 此过程称为function invocation 。 语法 (Syntax) function_name() 以下示例说明了如何调用函数 - void main() { test(); } test() { //function definition print("function called"); } 它将产生以下output -
函数定义指定特定任务的执行方式和方式。 在使用函数之前,必须先定义它。 定义标准函数的语法如下 - function_name() { //statements } OR void function_name() { //statements } void关键字表示该函数不向调用者返回任何值。 示例 - 简单函数定义 test() { //functio
问题内容: 有时我看到: 有时我看到: 两种形式之间有区别吗?是否有令人信服的理由使用一种形式而不是另一种形式? 问题答案: 这两种形式没有实际的区别,但是从_语法的_角度来看,两者之间的区别是第一个示例a中将包含分组运算符(括号),其中包括: 在第二个示例中,我们首先拥有一个整数,其中包含:
问题内容: 我已经将我的代码重组为promises,并建立了一个精彩的长期承诺链,其中包含多个.then()回调。最后,我想返回一些复合值,并且需要访问多个中间promise结果。但是,序列中间的分辨率值不在上次回调的范围内,如何访问它们? 问题答案: 当然,语言设计者也意识到了这个问题。他们做了很多工作,异步函数提案最终使它成为了 ECMAScript 8 您不再需要单个调用或回调函数,因为在异