В шаблоне 1 не фиксируются какие-либо ошибки, которые могут возникнуть во время асинхронных операций в функции set
- любые ошибки приведут к необработанному отклонению Promise, которого следует избегать.Шаблон 1 будет перехватывать только те ошибки, которые возникают во время синхронных операций * (например, при настройке запроса fetch
), которые в большинстве случаев маловероятны.
Пример:
// open your browser's console to see the uncaught rejection
const set = () => new Promise((_, reject) => setTimeout(reject, 500));
async function setSomething() {
try {
set(); // another async function
} catch (err) {
console.log('err');
}
return true;
}
setSomething();
Таким образом, шаблон 2, вероятно, предпочтительнее.Если вас не волнует результат асинхронного вызова, то не звоните await
или .then
, когда вы звоните setSomething()
.
. Или, для чего-то такого простого, вы можете подумать об использованииPromise
только методы, async
функция не требуется:
const setSomething = () => set()
.catch((err) => {
// log the error here
});