Функция должна возвращать дефолтную картинку, а не возвращать исключение
Задана функция и по умолчанию имитируется неудачный запрос
// Функция имитирует неудачный запрос за картинкой
function fetchAvatarImage(userId) {
return new Promise((resolve, reject) => {
reject(new Error(`Error while fetching image for user with id ${userId}`));
});
}
export async function getAvatarUrl(userId) {
const image = await fetchAvatarImage(userId);
return image.url;
}
Тестом вызывается функция
test('getAvatarUrl', async () => {
await expect(getAvatarUrl(1)).resolves.toBe('/images/default.jpg');
});
Подскажите, что должно добавиться, чтобы асинхронная функция getAvatarUrl возвращала дефолтную картинку пользователя, а не выбрасывала исключение.
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Нужно просто добавить catch и из него вернуть объект:
{
url: '/images/default.jpg'
}
(async() => {
function fetchAvatarImage(userId) {
return new Promise((resolve, reject) => {
reject(new Error(`Error while fetching image for user with id ${userId}`));
});
}
async function getAvatarUrl(userId) {
const image = await fetchAvatarImage(userId).catch(e => ({
url: '/images/default.jpg'
}));
return image.url;
}
console.log(await getAvatarUrl(1));
})()
Ну или использовать синтаксис try..catch:
(async() => {
function fetchAvatarImage(userId) {
return new Promise((resolve, reject) => {
reject(new Error(`Error while fetching image for user with id ${userId}`));
});
}
async function getAvatarUrl(userId) {
try {
const image = await fetchAvatarImage(userId);
return image.url;
} catch (e) {
return '/images/default.jpg'
}
}
console.log(await getAvatarUrl(1));
})()