最后的承诺没有在第一次通话时完成

时间:2018-04-23 08:16:01

标签: promise parse-server cloud-code

以下是使用promises在Parse-Server上的云功能中的一些代码。 它应该被调用一次,并做一些删除树状结构中的内容的工作。

问题是我必须两次调用相同的代码才能完成工作。 如果有人可以看一看并说出错了,那将非常有帮助。 这是第一次调用代码时发生的情况。除最后一次删除外,所有工作都已完成。

这意味着来自以下行的代码:

console.log("We finally remove the unit.");

以后没有执行。

第二次运行代码时,最后一部分正确执行。

我可能对承诺做了一些不正确的事情,但我看不到。

Parse.Cloud.define
("removeTheThing", function(request, response) {
 var thingQuery;
 thingQuery = .....;
 .....

 thingQuery.find().then
 (function(resUnit) {
  var secondLevelQuery;
  secondLevelQuery = .....;
  .....

  secondLevelQuery.find().then
  (function(resSentence) {
   var thirdLevelQuery;
   thirdLevelQuery =  .....;
   .....

   thirdLevelQuery.find().then
   (function(resTranslat) {
    var fourthLevelQuery;
    fourthLevelQuery = .....;
    .....

    fourthLevelQuery.find().then
    (function(resExplain) {
     var destroyPromises = [];
     for (i = 0; i < resExplain.length; i++) {
       destroyPromises.push(resExplain[i].destroy({}));
     }
     return Parse.Promise.when(destroyPromises);
     }).then
    (function() {
      var destroyPromises = [];
      for (iT = 0; iT < resTranslat.length; iT++) {
        destroyPromises.push(resTranslat[iT].destroy({}));
      }
      return Parse.Promise.when(destroyPromises);
    }).then
    (function() {
     var destroyPromises = [];
     const s3 = new aws.S3();
     for (iS = 0; iS < resSentence.length; iS++) {
       // Let us remove the voice recording:
       destroyPromises.push(s3.deleteObject({
         Bucket: "londonspeak",
         Key: resSentence[iS].get("audio")
       }).promise());
       destroyPromises.push(resSentence[iS].destroy({}));
     }
     return Parse.Promise.when(destroyPromises);
    }).then
    (function() {
      console.log("We finally remove the unit.");
      //return resUnit[0].destroy({});
      //return Parse.Promise.when(resUnit[0].destroy({}));//Promise()
      var destroyPromise = [];
      destroyPromise.push(resUnit[0].destroy({}));
      return Parse.Promise.when(destroyPromise);
    }).then(response.success);
   });
  });
 });
});

0 个答案:

没有答案