Как поймать ошибки javascript в асинхронных функциях

#javascript #asynchronous

#javascript #асинхронный

Вопрос:

Как мне поймать простые ошибки js в асинхронных функциях? В следующем коде функция «errorfkt» недоступна. Если я удалю ключевое слово «async» перед функцией «testfkt», я увижу ошибку ссылки в консоли. С ключевым словом «async» ошибка не видна.

 document.querySelector('#btnTest').addEventListener('click', testfkt)

async function testfkt() {
  errorfkt();
  console.log('test');
}
  

https://codepen.io/Jochen99/pen/NWrEWgb?editors=1111

Во время разработки я часто вижу очень очевидные ошибки в асинхронных функциях, потому что браузер не жалуется. Есть ли способ справиться с этим?

Приветствую, Йохен

Комментарии:

1. почему вы используете async , пока внутри функции нет await функции?

Ответ №1:

Исключения в обещаниях доступны в catch методах.

 addEventListener('click', (event) => {
    testfkt(event).catch(error => {
        console.log(error);
    });
})
  

Вы также можете использовать try/catch async await синтаксис with /:

 addEventListener('click', async (event) => {
    try {
        await testfkt(event)
    } catch(error) {
        console.log(error);
    }
})
  

Ответ №2:

Вы можете использовать блок try catch в функции

 async function testfkt() {
  try {
    await errorfkt();
    console.log('test');
  } catch(e) {
    console.log(e);
  }
}