Во-первых, чтобы читать стрелочные функции, вы должны понимать, что есть два способа вернуть значение в стрелочных функциях:
const func = x => x * x; // concise body syntax, implied "return"
const func = (x, y) => { return x + y; }; // with block body, explicit "return" needed
Теперь следующее будет go через шаги по преобразованию кода с использованием цепочку обещаний в код с использованием async/await
. Выполнив задачу B (замените цепочку обещаний на async/await
), вы завершите задачу A (код без стрелочных функций)
Если метод возвращает Promise
, например fetch
и Body.json()
do, вы можете дождаться его результата:
const res = await fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699");
const result = await res.json();
items = result.items;
console.log(items);
Чтобы обработать ошибку без цепочки .catch
, вы оберните код блоком try/catch
:
try {
const res = await fetch(
"https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699"
);
const result = await res.json();
items = result.items;
console.log(items);
} catch (error) {
console.log(error);
}
Наконец, ключевое слово await
может может использоваться только внутри asyn c функции docs , поэтому вам нужно обернуть его в функцию, объявленную с async
:
async function run() {
try {
const res = await fetch(
"https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699"
);
const result = await res.json();
items = result.items;
console.log(items);
} catch (error) {
console.log(error);
}
}
run();
Вы также должны знать, что любая функция объявленный с ключевым словом async
, также возвращает обещание, которое вы можете ждать.