Здравствуйте!
Делаю тестовое задание, в котором надо выводить товары, возвращаемые с рандомной удачей локальным сервером (в папке server). В импортируемой модели(файл APImodel.js в папке client) создал метод getGoodsList:
function getGoodsList(step = 0) {
fetch(`http://localhost:3000/api/products?status=200`)
.then(res => {
if (res.status === 404) {
return {}
}
if (res.status === 500) {
if (step < 2) {
getGoodsList(step++);
}
else {
createMessage('Произошла ошибка, попробуйте обновить страницу позже');
}
}
return res.json();
})
.then (json => {
if (!(!json.products || json.products.length === 0)) return json;
})
.catch(error => {
console.log(`Error name is: ${error.name}, error message is: ${error.message}`);
});
}
который в файле view.js вызываю таким образом:
async function createApp(container, model) {
//showSpiner();
model.getGoodsList()
.then(goodsData => {
if (goodsData !== null && goodsData.products.length > 0){
let goodsUL = createGoodsList();
container.append(goodsUL);
for (let item in goodsData.products) {
let product = createLi(goodsData.products[item]);
goodsUL.append(product);
}
}
});
}
Можно ли здесь использовать .then? Или это только для promise объектов, и мой метод getGoodsList возвращает не promise?