lavezzi1
@lavezzi1

Почему не отрабатывает resolve Promise?

function checkItem(id) {
  return new Promise((resolve) => {
    fetch(`/items/${id}/`)
       .then(response => response.json())
       .then((response => {
          if (response.item.active) {
            alert('Item is activated, yeah!');
            resolve(response.item);
           else {
             setTimeout(() =>  checkItem(id), 5000);
           }
       })
   })
}


Алерт отрабатывает, но в месте где я вызываю функцию в первый раз ничего не возвращается. Как будто промис не ресолвится.

checkItem.then(item => console.log(item));

Почему так?

PS Работает все как надо если попадает в if, если else то после второго вызова checkItem уже не ресолвится
  • Вопрос задан
  • 145 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Работает все как надо если попадает в if, если else то после второго вызова checkItem уже не ресолвится

Ну, всё правильно - ведь вы ничего и не резолвите в этом случае. Попробуйте делать так:

else {
  checkItem(id).then(resolve);
}
Ответ написан
Комментировать
Потому что внутри
setTimeout(() => checkItem(id), 5000);
Создается свой промис и он ресолвится в никуда.
Как-то так попробуй:
setTimeout(() =>  checkItem(id).then(resolve), 5000);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mlnkv
@mlnkv
JavaScript Developer
function checkItem - checkTask.then
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы