1
我是一个刚刚接触异步问题的新手编码器。为了简单起见,我创建了一个快速示例来说明我的问题。我有一个简单的函数来运行查询,结果是调用2个其他云功能。然后尝试为返回的对象和.save()设置值。除了.save()之外,一切都似乎正确执行。我试过使用promises/.thens和其他一些技巧,但没有任何工作。如果有人能够提供最简单直接的解决方案,我会非常感激。解析云代码:如何调用异步保存的承诺
Parse.Cloud.define("test", function(request,response){
query.equalTo("name",request.params.name);
query.first(
success: function(result){
result.set("testAverage", Parse.Cloud.run("calcAverage",{"name":request.params.name,"type":"test"}));
result.set("quizAverage", Parse.Cloud.run("calcAverage",{"name":request.params.name,"type":"quiz"}));
result.save();
},
error: function(){
response.error("error");
}
);
return result;
});
P.S.在我的实际情况中,有10-20个并行呼叫到其他云功能,而不仅仅是2.
谢谢!
另外,你提到你有10个-20个并行调用...我对分析不太熟悉,它是否为你做了这个优化,但我会考虑创建一个超级函数来包装所有这些乐趣在一次通话中,您只需触碰一次服务器。 – JPatrick
我尝试过这样做,但它不起作用。我使用“结果”而不是“结果”,并且当查询返回结果时,如果尝试.get()任何属性,它将返回“undefined”。另外.save()不起作用。我还在解析博客上发布了更深入的示例:https://www.parse.com/questions/cloud-code-problem-with-promises-and-saving-parse-objects – BinarySolo
'.then'内的回调函数应该更好地回报承诺_以便更好地重复使用。 –