从功能中回归承诺

时间:2016-01-24 13:38:40

标签: javascript parse-platform promise

我正在使用Parse Baas库。我定义了一些调用各种Parse Cloud代码函数的函数。我目前对javascript承诺有基本的了解。我正在努力的一件事是如何处理以下

我有一个自定义功能,我可以从其他模块调用。

   function CustomFunction()
   {
        var GameScore = Parse.Object.extend("GameScore");
        var gameScore = new GameScore();
        gameScore.set("score", 1337);
        gamesScore.save().then(
          function(object) {
              // the object was saved.
              // What do I return from here??
        },
        function(error) {
                // saving the object failed.
                 // What do I return from here??
         });
   }

在某些情况下,我可能想在gamesScore.save()中失败。然后(函数(对象){}所以我不想只返回gamescore.save()。 现在,当我调用自定义函数时,它确实需要返回一个promise,因为其中包含的代码是异步的'。那么我从自定义函数中返回什么呢。

   CustomFunction().then(
      function(result) {

    },
    function(error) {

    });

2 个答案:

答案 0 :(得分:1)

由于gamesScore.save()已经是承诺,您只需从CustomFunction

返回即可
function CustomFunction() {
  ...
  return gamesScore.save();
}

现在你应该能够CustomFunction这样使用

CustomFunction().then(function(data) {
  ...
}, function(err) {
  ...
});

答案 1 :(得分:1)

然后.then()CustomFunction中的回调充当过滤器。如果您想首先更改已解决/拒绝的结果,您可以在那里执行此操作。否则,请勿使用.then()。只需返回.save()函数

function CustomFunction()
{
    var GameScore = Parse.Object.extend("GameScore");
    var gameScore = new GameScore();
    gameScore.set("score", 1337);
    return gamesScore.save();
}

然后,使用.done(result)或.fail(error)

来使用结果
CustomFunction().done(function(result){ console.log(result); });