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'內的回調函數應該更好地回報承諾_以便更好地重複使用。 –