#javascript #node.js
#javascript #node.js
Вопрос:
function sendPushNotification(subscription, urlEncodedData){
try {
webpush.sendNotification(subscription, urlEncodedData);
} catch (err){
console.log('err');
console.log(err);
}
}
Это не улавливает ошибку, она по-прежнему считается «необработанным отклонением». Почему?
Комментарии:
1. Разве вам не пришлось бы
await
это делать или что-то в этом роде? Любые другие подробности о webpush?
Ответ №1:
Если вы вызываете async
функцию или функцию, которая возвращает a Promise
, тогда вам нужно правильно упорядочить вещи:
async function sendPushNotification(subscription, urlEncodedData){
try {
await webpush.sendNotification(subscription, urlEncodedData);
} catch (err){
console.log('err');
console.log(err);
}
}
Здесь await
будет зафиксирован любой ответ. Условие ошибки, которое будет проявляться как исключение.
Обратите внимание, что это приводит sendPushNotification()
к возврату a Promise
, поэтому вам придется рассматривать его как асинхронный. Это означает, что вызывающий абонент тоже должен await
это сделать, и это может повлиять на цепочку вызовов в зависимости от ваших требований к последовательности.
Комментарии:
1. Брутальный, спасибо за помощь, я бы никогда этого не понял.
2. Если вы привыкли блокировать код (синхронно), как и в большинстве других языков, то вам может быть сложно разобраться с асинхронным стилем кодирования JavaScript, так что не корите себя за это. Вы были действительно близки.
3. Я обычно работаю с async / await в JS, но я этого раньше не видел.