我正在运行批处理作业,我希望它们为每个查询结果连续运行问题是 query.each 似乎并行执行所有内容
如何更改我的代码以使所有内容都按顺序执行?
Parse.Cloud.job("fetchMenus", function(request, status) {
var counter = 0;
// Query for all users
var LocationSP = Parse.Object.extend("Location");
var query = new Parse.Query(LocationSP);
query.doesNotExist("menu");
query.equalTo("city_lc","new york");
// query.limit(10);
var p = Parse.Promise.as("");
query.each(function(location) {
p = p.then(function(){
if (counter % 100 === 0) {
// Set the job's progress status
status.message(counter + " users processed.");
}
// console.log(location);
// console.log(location.get("location_id"));
Parse.Cloud.run('getMenu2', {alias: location.get("location_id") }, {
success: function(result) {
// result is 'Hello world!'
counter += 1;
return Parse.Promise.as("1");
},
error: function(error) {
return Parse.Promise.as("1");
}
});
})
return p;
}).then(function() {
// Set the job's success status
status.success("Migration completed successfully.");
}, function(error) {
// Set the job's error status
status.error("Uh oh, something went wrong." + error);
});
});