3

JavaScript Пытаюсь получить простой JSON через fetch Данные в файле .json: { "id" : 1, "text": "Отзыв1","approved": false}

Проблема в том что fetch пролетает нигде не задерживаясь и я не могу заполнить переменную data1 данными. Потом (через некоторое время) идут обратные запросы к блокам then и данные заполняются.

Подскажите пожалуйста - как дождаться окончания работы fetch? Т.е. я хочу положить запрошенные данные в переменную data1

    console.log('fetch');
    var data1;
    fetch('fetch2.json')
        .then(function(response) {
            console.log(response.headers.get('Content-Type'));
            console.log(response.status);

            return response.json();

            // if (response.status >= 200 && response.status < 300) {
            //     return response.json();
            // } else {
            //     return Promise.reject(new Error(response.statusText))
            // }
        })
        .then(function(data_json) {
            console.log(data_json.text);
            data1=data_json;
        })
    ;
        // .catch(err => console.error(err));
    console.log('111111111111111');
    console.log(data1);
  • Прочитал ответ - но все равно не понял.

    Основная идея-создается Promice: function getResult(N) { return new Promise

    Использование результата осуществляется через вызов then getResult(42).then(function (result) { someDiv.textContent = result; });

    Тогда получается fetch (возвращает Promice) в том виде как я ее написал должна выдавать значение - а она не выдает и проваливается дальше.

    Почему ?

    – Gayrat Vlasov Jul 04 '18 at 14:57
  • задумайтесь над словом "асинхронность". Помедитируйте. –  Jul 04 '18 at 15:06
  • Попробуйте так: async function getjson() { const response = await fetch('fetch2.json'); const json = await response.json(); console.log(json); } getjson() – Dedotmoroz Jul 04 '18 at 15:07
  • Dedotmoroz, спасибо за подсказку!

    Но не помогло.

    var json1; async function getjson() { const response = await fetch('fetch2.json'); json1= await response.json(); console.log(json1.id); }

        getjson();
        console.log('111111111111111');
        console.log(json1.text);
    
    – Gayrat Vlasov Jul 05 '18 at 06:21
  • Вот вывод с консоли: 111111111111111 Uncaught TypeError: Cannot read property 'text' of undefined (anonymous function) 1 – Gayrat Vlasov Jul 05 '18 at 06:21
  • т.е. несмотря на наличие await - ожидание не происходит и код спокойно выполняется дальше – Gayrat Vlasov Jul 05 '18 at 06:22

0 Answers0