当Parse云函数返回Promise时会发生什么?

时间:2016-01-17 02:22:42

标签: javascript parse-platform

这是一个非常简单的问题,但我无法在Parse文档中找到答案,也无法在StackOverflow中找到答案。

如果我有Parse Cloud功能,例如:

Parse.Cloud.define("someFunction", function (req, res) {
  return new Parse.Promise(function (resolve, reject) {
    // Do something then resolve or reject
  }
}

我从我的移动应用程序中调用它:

Parse.Cloud.run("someFunction", {})

Parse.Cloud.run返回的承诺会怎样?

我对此进行了测试,似乎永远不会解决也不会拒绝。我知道在一台主机上创建的承诺概念远程解析到另一台主机可能是不可能的,但我不知道Parse是如何工作的。 (如果它以这种方式工作的话会非常酷!)

感谢。

1 个答案:

答案 0 :(得分:0)

它几乎按照你的意愿发生。 Cloud函数传递一个FunctionResponse对象,该对象实现success()error(),所以......

Parse.Cloud.define("someFunction", function (request, response) {
    var anyPromise = // anything that creates a promise
    // no reason to return here, the caller is opaque
    anyPromise.then(function(result) {
        response.success("this will be what Cloud.run resolves to");
    }, function(error) {
        response.error("this will be passed to the reject function of Cloud.run");
    });
});

这样做的另一个好处是为我们隐藏网络序列化,所以......

response.success(anyObject);

将序列化任何对象,将其返回,并将其重建为分辨率的参数...

Parse.Cloud.run("someFunction", {}).then(function(result) {
    // result == anyObject
});