Здесь нет ничего плохого во вложенных цепочках обещаний - они представляют желаемый поток управления.
Рассмотрим, как будет выглядеть код, если он написан с использованием синтаксиса async
/ await
:
try {
var response;
try {
response = await fetch('file1.csv');
if (response.status !== 200) {
throw 'file1 no 200 response';
}
} catch(err) {
response = await fetch('file2.csv');
if (response.status !== 200) {
throw 'file2 no 200 response';
}
}
console.log('got file1 or file2:', response);
} catch(err) {
console.log('both files not found');
}
TBH, я считаю, что синтаксис .catch()
действительно более чист для этого варианта использования .