Async / await определенно сделал мой код чище и более сухим. Я не уверен в лучших практиках, когда дело доходит до обработки ошибок. Большинство примеров, которые я обнаружил, имеют try
/ catch
в функции async
. Вы должны иметь это, если у звонящего есть .catch()
? В чем преимущество примера 2 перед примером 1 ниже?
Example1 без try / catch в асинхронной функции:
function addReminder(data) {
/*do some stuff*/
saveReminder(data)
.then(/*do some stuff*/
.catch(error => console.log("Error saving reminder"));
}
async function saveReminder(data) {
await AsyncStorage.setItem('reminders', JSON.stringify(data));
/* do some stuff */
}
Example2 с try / catch в асинхронной функции:
function addReminder(data) {
/*do some stuff*/
saveReminder(data)
.then(/*do some stuff*/)
.catch(error => console.log("Error saving reminder"));
}
async function saveReminder(data) {
try {
await AsyncStorage.setItem('reminders', JSON.stringify(data));
/* do some stuff */
} catch (error) {
throw new Error(error);
}
}