【发布时间】:2015-03-19 19:55:18
【问题描述】:
我很难理解承诺,我确定我需要为此使用它们,但我不知道如何,其他答案对我一点帮助都没有。
我想遍历一个数组,查询数组每个值的所有结果,然后计算这些结果的平均值后,将平均值添加到数组中。每次迭代后,都会将此数组作为响应发送。
这是我的代码,可以帮助理解我:
Parse.Cloud.define('getScorePeopleArray', function(request, response) {
var peopleArray = request.params.peoplearray;
var query = new Parse.Query("Scores");
var resultat;
var index, len;
var resultarray = [];
var people;
for (index = 0, len = peopleArray.length; index < len; ++index) {
people = peopleArray[index];
query.equalTo("People",people);
query.find({
success: function(results) {
var sum = 0;
for (var i = 0; i < results.length; ++i) {
sum += results[i].get("Score");
}
resultat = (sum / results.length)*5;
if(!resultat){
resultarray.push("null");
}else{
resultarray.push(resultat);
}
},
error: function() {
response.error("score lookup failed");
}
}).then();
}
response.success(resultarray);
});
当然 response.success 不会在每个查询完成时调用,而是尽快调用(因为如果我是对的,查询是异步的)。 我知道我必须用承诺来改变它,但我完全不明白这是如何工作的。
提前非常感谢!
【问题讨论】:
-
these 中的任何一个对您有帮助吗?
-
我会检查一下,谢谢
-
推荐阅读@Bergi 的一般承诺同意书。您还应该查看 Parse.Query.or() 它也对结果进行联合。 parse.com/docs/js/api/symbols/Parse.Query.html#.or
标签: javascript parse-platform promise parse-cloud-code