javascript - firebase onCall 云函数不返回结果
问题描述
我的可调用函数如下所示:
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: [] } }
解决方案
您正在捕获 and 返回的承诺function1
,function2
并尝试将它们直接发送给客户端。那是行不通的。您将需要在由Promise.all()
.
return Promise.all([
function1(),
function2()
])
.then((result1, result2) => {
console.log(result1);
console.log(result2);
return {
result1: result1,
result2: result2
}
})
请注意,您甚至不需要在更高的范围内声明 result1 和 result2。
推荐阅读
- php - Laravel Unknown column 'name' in 'field list'" on Register
- javascript - 为什么只有某些 javascript 函数在 HTML 脚本标签中起作用?
- reactjs - 我需要将一个 URL 从一个类组件传递到另一个
- python - 使用 Beautiful Soup 在 python 中抓取网页
- visual-studio-code - 如果以管理员身份打开,为什么 VSCode 无法从资源管理器中打开文件?
- java - 从 Google Cloud Dataflow 内部写入 Firestore
- r - 使用 R 的人总相关性
- python - 使用 setuptools 将 pytests 添加到我的项目中
- javascript - 页面重新加载后如何保持最喜欢/不喜欢的按钮颜色?
- opengl-es - glMapBufferRange 返回 null 并产生一个 GL_INVALID_ENUM?