gpt4 book ai didi

javascript - 如何从包含 promise 链的常规 javascript 函数返回值?

转载 作者:行者123 更新时间:2023-11-30 16:30:27 26 4
gpt4 key购买 nike

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() 完成执行(即 resolve the promise),然后再将执行交还给调用者,在本例中为 bSFI()

调用 bSFI() 只会在 bsfir() 中执行几行代码。 bSFI() 的执行几乎立即/瞬间完成,可能是因为 bsfir() 中的 promise 没有绑定(bind)到返回值,所以当 bSFI() 调用 bsfir(),立即执行到 response.success(bsfirr);

bsfir() 中使用 Promise.all() 是一个好的解决方案吗?

最佳答案

不,您不能等到 promise 解决后再返回。您的任务是异步的,但返回必须立即发生。

但是您可以做的是简单地(从您的)本身返回 promise ,并让您的调用者等待它。事实上,您的 bSFI() 已经使用了 promise,因此集成起来很简单。

function bsfir() {
return Parse.Promise.as().then(function() {
// ^^^^^^
return Parse.Cloud.run('gRFI', {});
}).then(function(gRFIr) {
return Parse.Cloud.run('gFI', {});
});
}

Parse.Cloud.define("bSFI", function(request, response) {
Parse.Promise.as().then(bsfir).then(function(bsfirr) {
response.success(bsfirr);
}, function(error) {
response.error("219 error: " + JSON.stringify( error));
});
});

请注意,您应该能够在这两个函数中将 Parse.Promise.as().then(...) 替换为 ...()

关于javascript - 如何从包含 promise 链的常规 javascript 函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33403543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com