"同时"从 Firebase Cloud 实时呼叫多个寄存器



当实时数据库中写入"邀请"时,我正在尝试向用户发送一些推送。

当云函数检测到邀请的创建被触发,并将用户列表恢复为已邀请(id(时。

获得此 ID 后,我必须恢复每个 id 的用户信息,以便获取语言、fcmToken 等信息。

阅读一些SO问题,我看到我必须创建对"呼叫"的引用,例如:

admin.database().ref(`/user/${userId}`).once('value')

然后将其存储在数组中并使用 Promise.all(( 调用

var userPromises = [];
for (var i = 0;i<usersInRange.length; i++) {
var userId = usersInRange[i];
userPromises[i] = admin.database().ref(`/user/${userId}`).once('value');
}
Promise.all(userPromises).then(results => {
...
})

这就是我需要帮助的地方。

我遇到了一些问题,因为如果 Promise.all(( 在检索某个用户时失败,它会停止,并且不读取其他 id。

有一种方法可以"一个接一个"地避免 Promise.all(( 停止?

在这里你可以找到一个类似的问题,已经回答了。总而言之,他们说您可以使用异步函数(如果可能的话(。另一种方法是使用循环。

function runSerial(tasks) {
var result = Promise.resolve();
tasks.forEach(task => {
result = result.then(() => task());
});
return result;
}

值得一看。

最新更新