【发布时间】:2014-10-04 22:26:58
【问题描述】:
在我的 Parse Cloude 代码中,我需要运行几个连续的查询,每个查询都使用“find()”。
例子:
var promise = firstQuery.get(objectId).then(function(result1){
return secondQuery.find();
}).then(function(result2){
return thirdQuery.find();
}).then(function(result3) {
// here I want to use "result1", "result2" and "result3"
});
问题是:如何在最后的“then”语句中访问“result1”和“result2”,而不将它们分配给在父作用域中声明的变量。
我为什么要问这个问题:如果你嵌套了一堆你在循环中创建的 Promise 以便它们并行执行,你就不能使用父作用域技巧(想象一下围绕上述语句的 for 循环,所有这些承诺被放入一个数组中,然后使用“Parse.Promise.when”进行评估。它们都将同时开始修改父范围变量。)
我可以创建某种承诺对象,我可以在其中返回类似于以下内容的内容:
Parse.promise({result:result1,findResult:secondQuery.find()};
所以我可以通过执行从“result2”参数中获取值
result2.result
和
result2.findResult
我希望我说清楚。这不是很容易解释。
【问题讨论】:
-
你是在第二个查询中使用第一个查询的结果吗?或者您是否可以并行运行所有三个查询,最后只检查所有三个查询的结果?如果是这样,有一种更快、更简单的方法来做到这一点。
-
所以你把我的问题标记为“之前被问过”,Bergi,而我的问题来自 2014 年 8 月,而你的问题来自 2015 年 1 月?
-
@JorisMans:我确实将其标记为重复,即totally valid,因为另一个问题是关于该主题的规范问题(不确定您所说的“从技术上讲它们不是正确”)。我不得不承认,在创建规范问题时,我没有看到您的问题及其相当好的答案;我只是在使用搜索时遇到了你的。请注意,“之前询问”是known inacurracy,并不意味着日期对最终决定很重要。
标签: javascript parse-platform promise parse-cloud-code