Javascript 云代码多次保存然后响应成功

Javascript 云代码多次保存然后响应成功,javascript,parse-platform,parse-cloud-code,Javascript,Parse Platform,Parse Cloud Code,我在Parse应用程序数据库中有一个Game类和GamePlayer类,用户在其中玩游戏并赢得硬币 在我的云代码函数中,我有以下代码 success : function(results) { Parse.Cloud.useMasterKey(); if (results.length >= 2) { console.log("inside find query1 success."); for (var i = 0; i < object.

我在Parse应用程序数据库中有一个Game类和GamePlayer类,用户在其中玩游戏并赢得硬币

在我的云代码函数中,我有以下代码

success : function(results) {
   Parse.Cloud.useMasterKey();
   if (results.length >= 2) {
       console.log("inside find query1 success.");

       for (var i = 0; i < object.length; i++) {
          if (i == 0) {
             results[0].set("finish_msg", "You won!");
             results[0].attributes.playerId.set("coins", (results[0].attributes.playerId.attributes.coins + 10) );
          } else if (i == 1) {
             results[1].set("finish_msg", "You won!");
             results[1].attributes.playerId.set("coins", (results[1].attributes.playerId.attributes.coins + 5) );
          } else {
             object[i].set("finish_msg", "You lost!");
          }

          object[i].save();
       }

      response.success({
            "result" : true
      });
   }
}
成功:功能(结果){
Parse.Cloud.useMasterKey();
如果(results.length>=2){
log(“内部查找查询1成功”);
对于(变量i=0;i
这里,playerId是指向用户表的指针,我将第一个和第二个用户的硬币分别增加10和5

我要做的是设置所有用户的完成消息状态(win/lost),并在保存后向客户端发送成功响应。这里的保存过程需要一些时间。如何等待保存过程完成

目前,此代码有时有效,有时无效。特别是当结果长度大于3时

请建议如何更改代码以使其正常工作。

对象[I]。save()
异步运行,而
response.success()
会停止任何正在进行的操作。因此,在开始下几个循环时,早期保存finish,然后在循环结束时停止所有操作

解决这个问题的方法是承诺

var promises = [];
for (var i = 0; i < object.length; i++) {

    // ... your for-loop code

    // add a promise to save to the array of promises
    promises.push(object[i].save());
}
// return a promise that is fulfilled when all the promises in the array are fulfilled
Parse.Promise.when(promises).then(function() {
    // all of the saved objects are in 'arguments'
    response.success({result:true});
}, function(error) {
    response.error(error);  // return errors, too, so you can debug
});
var承诺=[];
对于(变量i=0;i
请回答一个问题:是否所有存储都以[i]的顺序以串行方式终止,或者每个存储都可以在自己的时间终止?thanks@GPack循环或承诺都不能保证顺序。when()