node.js - 在 Firebase Cloud Functions 上启动函数而不等待它们返回的正确方法
问题描述
我的代码如下所示:
exports.onRecordCreated = functions.database.ref('/' + postsFireRealtimeRef + '/{someId}')
.onCreate((snap, context) => {
return someFunctionReturningAPromise(someParameter);
}).then(someParameter => {
return someFunctionReturningAPromise(someParameter);
}).then(someParameter => {
return someFunctionReturningAPromise(someParameter);
}).then(someParameter => {
return someFunctionReturningAPromise(someParameter);
});
我相信这个实现遵循开发者指南,链接所有异步操作并返回一个承诺。但是,问题在于这种方法,我不想等待这些someFunctionReturningAPromise(..)
功能完成(主要是因为它们花费的时间太长,而且我有一个用户要在前端的流程中返回)。我宁愿在他们的路上发送这些函数来做他们的事情并返回一个已解决的承诺。
所以我会做这样的事情:
exports.onRecordCreated = functions.database.ref('/' + postsFireRealtimeRef + '/{someId}')
.onCreate((snap, context) => {
doWork();
return true // Tell front end that the server was reached ok with the record being created, but don't wait for all asynchronous operations to complete
});
function doWork() {
return someFunctionReturningAPromise(someParameter)
.then(someParameter => {
return someFunctionReturningAPromise(someParameter);
}).then(someParameter => {
return someFunctionReturningAPromise(someParameter);
}).then(someParameter => {
return someFunctionReturningAPromise(someParameter);
});
}
有了这个解决方案,我担心 Firebase 实例会关闭我的“流氓”功能。根据 Firebase 的说法,我不知道是否可以保证该doWork()
函数可以运行:
通过正确终止函数...可以确保运行您的函数的 Cloud Functions 实例在您的函数成功达到其终止条件或状态之前不会关闭。
在 Firebase 云之上运行这些独立功能的正确方法是什么?我应该包装doWork()
一个单独的HTTP 函数吗?
解决方案
推荐阅读
- angular - 声纳覆盖率:lcov 覆盖率报告中的文件路径不正确
- javascript - 为什么这个脚本不起作用?实时预览中未显示任何内容
- google-admin-sdk - 如何在没有oauth2的g套件中创建新用户
- r - ggsave 和 gganimate 的“动画”中符号的大小一致
- javascript - Symfony 4 - 使用带有 webpack encore 的 Algolia 地方
- nuget - Artifactory 中的 Nuget 异常
- python - 如何检查字符串列表中的字符串是否在熊猫数据框列中
- java - 按顺序对数组进行排序
- javascript - javascript中的函数语法
- postgresql - 定义子实体与使用类型列之间的性能差异