【发布时间】:2016-09-05 04:05:52
【问题描述】:
我刚刚学习 Javascript,但对 Parse 的云代码还是很陌生。我一直在阅读一些关于承诺和闭包的文章和问题,但仍然不太明白如何完成我想做的事情。所有其他问题/答案似乎略有不同或难以理解。
我有一个以获取所有“健身房”的查询开头的函数。对于这些健身房中的每一个,我都需要运行其他几个查询。在我为健身房生成最终报告之前,所有这些内部查询(循环内)都需要完成。我想了解以下几点:
a.) 如何允许循环的每次迭代中的正确健身房对象可以通过该迭代中的整个查询链访问。
b.) 我的链中先前执行的查询的所有结果是否会在以下查询中可用?例如我可以在最后一个函数中访问 newWorkouts 吗?
function createReports() {
var gymQuery = new Parse.Query(Parse.Object.extend("Gym"));
gymQuery.find({
success: function(results) {
for (var i = 0; i < results.length; ++i) {
/* jshint loopfunc: true */
var gym = results[i];
var newWorkoutsQuery = new Parse.Query(Parse.Object.extend("Workout"));
newWorkoutsQuery.equals("gym", gym);
newWorkoutsQuery.find().then(function(newWorkouts) {
var newLogsQuery = new Parse.Query(Parse.Object.extend("WorkoutLog"));
newLogsQuery.equals("gym", gym);
return newLogsQuery.find();
}).then(function(logsLastWeek) {
//Generate final report for gym using data from all above queries.
//Need access to gym, newWorkouts, and logsLastWeek
});
}
},
error:function() {
console.log("error");
}
});
}
【问题讨论】:
标签: javascript for-loop parse-platform promise parse-server