0

Пишу JS функцию, которая должна вернуть html код сайта. Внутри функции всё работает, переменная content содержит в себе html код, как надо. А если я пытаюсь присвоить какой-либо переменной значение этой функции, то получаю promise. Javascript только начал изучать, пока что логику не совсем понимаю

async function getData(){
    let response = await fetch('https://yandex.ru/');
    let content = await response.text();
    return content;
}

let data = getData();

Переменная data в итоге хранит promise вместо текста, хотя content выводится на консоль именно как текст. Как это исправить?

  • let data = getData().then()... – Алексей Шиманский Nov 16 '21 at 08:42
  • @АлексейШиманский, в этом случае data останется Promise – Grundy Nov 16 '21 at 08:55
  • @Grundy опять все эти заморочки с оборачиванием в функцию async надо делать?)) – Алексей Шиманский Nov 16 '21 at 09:13
  • @АлексейШиманский, конечно :-) если ты попал в async - из него не выбраться :) – Grundy Nov 16 '21 at 09:15
  • Async-await это за кулисами promise/then. Суть в том, что только через promise вы можете ждать ответа и двигаться дальше с его напудствующими методами типа then. Когда вы пишите async бейбел по умному и супер сложно оборачивает в промис, а await оборачивает в then. Вы пишите простую конструкцию, а за кулисами это целая оптимизированная и умная штука, куда лучше даже не лезть. Но когда вы получаете код через promise, дальнейшее его выполнение может быть только там иначе вы получите пустой результат. – WalkMess Nov 16 '21 at 09:56
  • Спасибо большое! – NextGen Nov 16 '21 at 09:59

0 Answers0