function bsfir() {
Parse.Promise.as().then(function() {
return Parse.Cloud.run('gRFI', {});
}).then(function(gRFIr) {
return Parse.Cloud.run('gFI', { });
}).then(function(gFIR) {
return gFIR;
}, function(error) {
return error;
});
}
Parse.Cloud.define("bSFI", function(request, response) {
Parse.Promise.as().then(function() {
return bsfir();
}).then(function(bsfirr) {
response.success(bsfirr);
}, function(error) {
response.error("219 error: " + JSON.stringify(error));
});
});
的目標是有bsfir()
完整的執行(即解決的承諾)交給執行返回給調用者,在這種情況下,之前。如何從包含承諾鏈的常規JavaScript函數中返回值?
調用導致只執行bsfir()
中的幾行代碼。的執行完成幾乎立刻/瞬間可能是因爲bsfir()
的承諾是不依賴於一個返回值,所以當電話bsfir()
,執行立即轉到response.success(bsfirr);
是使用Promise.all()
在bsfir()
好的解決辦法?
不,你不能那樣做。你所能做的只是回報一個承諾。沒有辦法使異步操作同步。 – Bergi
謝謝Bergi,回覆諾言也會有效。 bsfir()中只有1或2行代碼在分割秒中執行,它需要調用bsfir(),然後繼續在調用者中執行,並且bsfir()中的其餘代碼沒有機會被運行。在許多其他情況下,如果我要將bsfir()更改爲雲代碼,則它可以很好地工作。 bSFI()將調用bsfir(),並且在bsfir()完成100%後,bsfir()的返回值返回給bSFI(),然後按預期方式繼續執行bSFI()。但由於bsfir()是一個常規的javascript函數,它並不像預期的那樣工作。 –