javascript - Firebase 处理异步函数
问题描述
我有一个firebase函数,如下所示:
exports.myFunction = functions.database.ref('/users/{id}/').onWrite((snapshot, context) => {
//do some processing here
var number;
snapshot.after.ref.parent.once('value').then((newSnapshot) => {
number = newSnapshot.child('number').val();
});
console.log(number);
//do some processing with the use of var number
//returning the updates after processing
return snapshot.after.ref.update(updates);
});
我意识到变量 number 是未定义的,因为我用来获取 number 值的函数是异步运行的。但是,我想不出一种方法来转换此实现,使其按我想要的方式工作。任何帮助,将不胜感激。
解决方案
您可以链接一个新的 .then() 来对此号码执行处理。例如:
exports.myFunction = functions.database.ref('/users/{id}/').onWrite((snapshot, context) => {
...
var number;
return snapshot.after.ref.parent.once('value').then((newSnapshot) => {
number = newSnapshot.child('number').val();
}).then((number) => {
console.log(number);
//do some processing with the use of var number
snapshot.after.ref.update(updates);
});
});
推荐阅读
- c++ - 在 OS Catalina 中找不到 GDB
- function - Python 虚拟助手在一段代码后无法继续。而1:
- c# - 使用 MassTransit 发送到多个 RabbitMQ 主机
- r - 安装包 e1071
- postgresql - 使用 postgres 数据库锁定并发 cron
- spring-boot - 单元测试用 Spring Boot 编写的 WebSocket Signaling 服务器
- c - 如何检查给定整数是否已存在于文件中
- android - 为什么在使用 Cordova 构建 APK 时出现此错误?
- c - NCurses 标准输入重定向
- php - 在codeigniter中向控制器发送数据视图