Вы можете использовать функцию Promise.all () для инкапсуляции нескольких вызовов в sns.publish.
- Создать функцию публикации с одним уведомлением, которая возвращает Promise:
.
function onePublishPromise(notificationParams){
return new Promise((resolve, reject) => {
sns.publish(notificationParams, function(err, data) {
if (err) {
console.error("Unable to send notification message. Error JSON:", JSON.stringify(err, null, 2));
reject(err);
} else {
console.log("Results from sending notification message: ", JSON.stringify(data, null, 2));
resolve(null);
}
});
});
}
Создание и отправка уведомлений параллельно:
// Create notifications params
const notifications = [
{
Subject: 'A new notification',
Message: 'Some message',
TopicArn: 'arn:aws:sns:us-west-1:000000000:SomeTopic'
}
// , ...
];
// Send all notifications
const notificationsDelivery = notifications.map(onePublishPromise);
// Wait for delivery results
Promise.all(notificationsDelivery).then(callback).catch(callback);
callback
будет вызываться после всех опубликованных сообщений (успешно или нет)