Показать сообщение отдельно
  #1 (permalink)  
Старый 05.03.2024, 21:24
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Можно ли здесь использовать then?
Здравствуйте!

Делаю тестовое задание, в котором надо выводить товары, возвращаемые с рандомной удачей локальным сервером (в папке 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?
Вложения:
Тип файла: zip дз.zip (4.0 Кб, 0 просмотров)
Ответить с цитированием