【发布时间】:2026-01-05 06:25:01
【问题描述】:
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() 完成执行(即解决承诺),然后再将执行交给调用者,在本例中为bSFI()。
调用bSFI() 只会执行bsfir() 中的几行代码。 bSFI() 的执行几乎立即/瞬间完成,可能是因为bsfir() 中的承诺与返回值无关,所以当bSFI() 调用bsfir() 时,执行立即转到response.success(bsfirr);
在bsfir() 中使用Promise.all() 是一个好的解决方案吗?
【问题讨论】:
-
不,你不能那样做。你所能做的就是回报一个承诺。无法使异步操作同步。
-
谢谢Bergi,返回一个promise 也可以。 bsfir() 中只有 1 或 2 行代码在调用 bsfir() 的瞬间执行,然后在调用者中继续执行,& bsfir() 中的其余代码没有机会运行。在许多其他情况下,如果我将 bsfir() 更改为云代码,它会完美运行。 bSFI() 将调用 bsfir() 并在 bsfir() 完成 100% 后,将 bsfir() 的返回值返回给 bSFI(),然后按预期在 bSFI() 中继续执行。但是由于 bsfir() 是一个常规的 javascript 函数,它的行为并不像预期的那样。
标签: javascript parse-platform promise parse-cloud-code