【问题标题】:Parse.com CloudCode does the codes after response.success() get processed?Parse.com CloudCode 是否处理 response.success() 之后的代码?
【发布时间】:2014-09-06 11:41:49
【问题描述】:

如果我有这样的代码

if (request.params.friends != null)
{
_.each(request.params.friends, function(friend) {
        // create news
        var News = Parse.Object.extend("News");
        var news = new News();

        news.set("type", "ask");

        news.save();
});
response.success();
}

request.params.friends的长度是2,第二条消息一定会保存吗?如果没有,如何确保它被保存?我查看了Parse.Promise 文档,在所有示例中,循环都在查询或保存中。我需要先保存第一个新闻然后创建Promise吗?我仍然不明白“异步”是如何工作的。response.success() 是否像 returnbreak 一样工作?

【问题讨论】:

    标签: javascript loops asynchronous parse-platform promise


    【解决方案1】:

    循环确实执行了两次。 response.success() 就像一个返回。

    异步的魔力在于“保存”方法。当调用“save”时,Parse.com 会说,“好的,你要我保存它。我会保存它,但不是现在。现在,我保证以后会保存它。” save 方法返回一个 Promise 对象,当对象被实际保存时,promise 将被实现。

    所以发生的事情有点像

    1. 第一次循环:创建朋友 #1。
    2. 请求 Parse 保存朋友 #1。
    3. 第二次循环:创建朋友 #2。
    4. 请求 Parse 拯救朋友 #2。
    5. 返回成功响应。
    6. Parse 实际上保存了朋友 #1 和朋友 #2

    自从我使用 Parse 已经有一段时间了,但我不确定通常两个朋友对象是否会真正得到保存。调用 response.success() 可能会终止正在进行的工作。这是另一种实现方式:

    var objectsToSave = _.collect(request.params.friends, function(friend) {
            var news = new News();
            news.set({type : "ask"});
            return news;
    });
    
    Parse.Object.saveAll(objectsToSave, {
        success: function(list) {
          // All the objects were saved.
          response.success();
        },
        error: function(error) {
          // An error occurred while saving one of the objects.
        },
      });
    

    saveAll 函数一次保存所有对象。它通常比一次保存一个对象要快。除了为 saveAll 提供要保存的对象外,我们还为它提供了一个带有成功函数和错误函数的对象。 Parse.com 承诺仅在保存完成(或遇到错误)后调用函数。

    还有其他一些事情正在发生。 Parse.Object.extend 语句属于代码中的不同位置。此外, set 函数不采用字符串列表。它需要一个 JavaScript 对象。

    【讨论】:

    • 哇!很好的答案!谢谢@ahoffer!我想我应该检查我所有的 CloudCode 函数是否存在这种错误
    • Parse.Object.set() 适用于 set("key", value) 以及 set({key: value, key2: value}) parse.com/docs/js/symbols/Parse.Object.html#set
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多