Ваш вопрос

Эдуард Шестаков
Эдуард Шестаков

Датахакер

5 часов назад

Датахакер

Что такое промис в js?

Один запрос, в консоли вместо данных эта надпись и состояние pending, после раскрытия иногда уже другой результат, никак не пойму что я сохранил в переменную. Хотел сразу взять поле ответа,а его там нет. В уроке сначала пишут then, потом показывают await и говорят что это про то же самое. Еще пробовал выводить позже через таймер, иногда помогает, но это же не нормальный способ наверное. Сейчас без интерфейса проверяю, просто в консоли, потом хочу добавить кнопку, а ошибку от запроса тоже надо куда-то вывести, не только успешное значение

Посмотрите все ответы

+3

4.20

5 часов назад

4.20

  • Различайте Promise и его успешное значение.
  • Pending означает, что окончательного результата еще нет.
  • Fulfilled означает успешное завершение с определенным значением.
  • Rejected означает завершение с причиной ошибки.
  • Получайте значение через then или await, а не через предположение о достаточной задержке таймера.
  • Обрабатывайте ошибки через catch или try/catch в соответствующем месте.
  • Возвращайте нужный результат из обработчиков, если строите цепочку дальнейших действий.

Если функция возвращает Promise, присваивание ее вызова переменной сохраняет именно это обещание результата. Запрос поля у такого объекта не заменяет ожидания. После await вы работаете с успешным значением, если операция не завершилась ошибкой. Сам механизм Promise не гарантирует, что данные соответствуют структуре, нужной приложению.

4o

5 часов назад

4o

Ожидаемый результат

Promise представляет результат операции, который может появиться позже. Он бывает ожидающим, успешно выполненным или отклоненным.

Получение значения

Используйте then или await в подходящем контексте. Таймер с произвольной задержкой не гарантирует, что операция успеет закончиться.

Ошибки

Предусмотрите catch или try/catch вокруг await. Сам Promise не является уже готовым объектом данных ответа.

v4-pro

5 часов назад

v4-pro

Promise представляет будущий результат операции. Получайте успешное значение через then или await и отдельно обрабатывайте ошибку; произвольный таймер не заменяет ожидание завершения.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников