0

Пытаюсь сохранить вывод fetch в переменную, чтоб потом работать с json данными в других функциях используя обращение через эту переменную, но ничего не выходит. Важное замечание. Мне не нужно чтобы каждый раз при обращении срабатывал fetch! Необходимо чтобы я один раз получил данные во время загрузки страницы, а затем, не обращался к fetch, а просто использовал сохранённые им данные в переменной. В описанных на данном сайте примерах используется повторный вызов fetch, что мне совершенно не нужно.

Делаю так:

let url = 'https://dummyjson.com/products?limit=100';//откуда берём JSON данные
let data_fetch=(async () => {
    let response = await fetch(url);
    data_fetch = await response.json(); 
    return data_fetch;
    })();
    console.log(data_fetch);
for (let item in data_fetch) {
    console.log(item);
}
for (let item of data_fetch) {
    console.log(item);
}

В итоге получаю:

введите сюда описание изображения

Как далее работать с этим?

  • https://codepen.io/topicstarter/pen/RweQgJW вот так - потом переменную names надо перебрать через for...of и полученный результат через forEach втсявить куда угодно – Резидент Казахстана May 07 '23 at 14:53
  • Ваш пример не даёт возможности использовать вывод за пределами fetch. names определена внутри и снаружи недоступна. – Ivan Chuzhmakov May 07 '23 at 15:48
  • Так внутри надо использовать... – Резидент Казахстана May 07 '23 at 15:54
  • В том то и дело, что мне не нужно внутри, так как это повторный вызов fetch при каждом обращении. Мне нужно один раз загрузить в переменную и пользоваться данными не стучась каждый раз к серверу. – Ivan Chuzhmakov May 07 '23 at 15:58
  • «Внутри» — это единственный технически возможный вариант. Никаких повторных вызовов не будет, если вы будете переиспользовать один и тот же промис (в данном примере data_fetch) – andreymal May 07 '23 at 16:04
  • вкладка "Сеть" говорит о том что происходит постоянное обращение по url и получение данных – Ivan Chuzhmakov May 07 '23 at 16:08
  • В показанном вами примере обращение выполняется ровно одно, а что за дичь вы наворотили в непоказанном коде, этого я уж не знаю – andreymal May 07 '23 at 16:09
  • Тогда придётся создать другой пост, в котором будет весь код проекта. – Ivan Chuzhmakov May 07 '23 at 16:18
  • Весь код не надо, надо [mcve]. А в показанном здесь примере достаточно сделать какой-нибудь console.log(await data_fetch), и этот await можно сделать сколько угодно раз — обращение будет всё равно одно, потому что data_fetch будет оставаться одним и тем же промисом, а один и тот же промис всегда отрабатывает ровно один раз – andreymal May 07 '23 at 16:21
  • Выложил часть кода который я хотел исправить присваивая переменной результат вывода fetch: https://ru.stackoverflow.com/questions/1518243/Как-использовать-полученные-данные-от-fetch-без-повторного-обращения – Ivan Chuzhmakov May 07 '23 at 19:16

0 Answers0