我有一个Firebase Cloud Functions脚本,我想在其中向用户发送推送通知。当我仅一次发送一组指定的令牌数组(由函数返回)时,它就可以正常工作:
return getTokens(array1).then(tokens => {
return (admin.messaging().sendToDevice(tokens, payload));
});
但是,我似乎无法弄清楚如何使用getTokens
函数的不同输入来多次执行此操作。我需要做这样的事情:
return getTokens(array1).then(tokens => {
return (admin.messaging().sendToDevice(tokens, payload));
});
return getTokens(array2).then(tokens => {
return (admin.messaging().sendToDevice(tokens, payload));
});
当然,上述解决方案失败了,因为第二对return then
是无法访问的代码,但是我无法弄清楚如何在JavaScript中正确地做到这一点。
如何顺利处理?请事先打扰一下,如果我要提出明显的问题,我对JavaScript还是陌生的。
编辑
我尝试了以下代码:
Promise.all([getTokens(inputArray1), getTokens(inputArray2)]).then(results => {
const tokens1 = results[0].val();
const tokens2 = results[1].val();
const promises = [];
promises.push(admin.messaging().sendToDevice(tokens1, payload));
promises.push(admin.messaging().sendToDevice(tokens2, payload));
return Promise.all(promises);
});
它会产生以下错误:预期的catch()或返回
答案 0 :(得分:1)
这是您的操作方式:
return Promise.all([admin.database().ref(`/tokensArray1`).once('value'), admin.database().ref(`tokensArray2`).once('value')]).then(results => {
const tokensArray1 = results[0].val();
const tokensArray2 = results[1].val();
const promises = [];
let payload = {
notification: {
title: 'title',
body: 'msg',
icon: 'default'
}
};
promises.push(admin.messaging().sendToDevice(tokensArray1, payload));
promises.push(admin.messaging().sendToDevice(tokensArray2, payload));
return Promise.all(promises);
});