我的可调用函数如下:
exports.function = functions.https.onCall((data, context) => {
let result1, result2;
async function function1() {
return 1;
}
async function function2() {
return 2;
}
return Promise.all([
result1 = function1(),
result2 = function2()
])
.then(() => {
console.log(result1);
console.log(result2);
return {
result1: result1,
result2: result2
}
})
})
我在客户端获得的result1和result2没有任何值,而只有一个称为domain的字段。我的云功能有什么问题?
日志输出
Promise {
1,
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
Promise {
2,
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
答案 0 :(得分:2)
您正在捕获function1
和function2
返回的承诺,并尝试将其直接发送给客户。那是行不通的。您需要在Promise.all()
返回的promise的回调中获取它们的解析值。
return Promise.all([
function1(),
function2()
])
.then((result1, result2) => {
console.log(result1);
console.log(result2);
return {
result1: result1,
result2: result2
}
})
请注意,您甚至不需要在较高范围内声明result1和result2。