@anvaslist

Как именно await получает результат промиса?

Всем привет. Есть следующий код:
(async () => {
  const response = await fetch('https://jsonplaceholder.typicode.com/users');
  console.log(response); // экземпляр объекта Response
})();

Вопрос: как именно await присваивает в переменную результат выполненного промиса? Вот смотрите, await дожидается выполнения промиса, дождалось, то есть у нас есть зарезолвленный экземпляр объекта Promise. Но... как именно у await получается вот так взять и достать результат этого зарезолвленного экземпляра и положить его в переменную? Ну я вот просто вообще не вижу здесь любого другого способа, как обратиться к свойству [[PromiseResult]] и взять значение этого свойства. Но оно же ведь недоступно? Я не хочу это просто так понимать, ну мол вот так await работае и все. Хочу копнуть глубже. И я знаю, что async/await построены на промисах и генераторах, при этом всё равно не понимаю, как у await получается достать результат Промиса. Объясните пожалуйста?
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Может быть станет понятнее, если добавить немного от классического примера:
function fetch(addr) {
  return new Promise((resolveFunction) => {
    setTimeout(() => {
      resolveFunction('addr response') // вызываем функцию, которая прилетела параметром
    }, 3000)
  })
}

(async () => {
  const response = await fetch('https://jsonplaceholder.typicode.com/users');
  console.log(response); // результат, который передали в resolveFunction
})();


Очень грубо говоря, все вообще обратно к колбэкам сводится, вернее к вызову функции с параметром по окончанию процесса .
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы