Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2021, 23:26
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Fetch запрос в формате модуля
Подскажите, как организовать fetch запрос в формате модуля.

Есть модуль:

function status(response) {
    if (response.status >= 200 && response.status < 300) {
        return Promise.resolve(response);
    } else {
        return Promise.reject(new Error(response.statusText));
    }
}

function json(response) {
    return response.json();
}


fetch("https://api.covid19api.com/summary", {
    "method": "GET"
})
.then(status)
.then(json)
.then((data) => {
   cb(data);
})
.catch((error) => {
    console.log(error.name);
    console.log('Ошибка: ' + error.message);
    console.log(error.response);
});

export default function cb(data) {
    return data;
}


Он импортируется в index.js

import cb from './modules/getData';

console.log(cb());


Но в консоль выводится undefined. Подскажите, пожалуйста, что я делаю не так. В чем ошибка? Если я пишу неправильно, то скажите, как можно организовать fetch запрос модулем, чтобы передавать в него различные url и другие параметры
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2021, 23:33
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Цитата:
Подскажите, пожалуйста, что я делаю не так.
Всё.

cb - функция которая возвращает то, что ей передали. Всё. Она ничего не запоминает, ничего никуда не пишет и не кэширует.
Вы вызвали её в последнем then с параметром data - она вернула этот data в пустоту и закончила работу.
Вы вызвали её без параметра - она вернула ничего, и вы передали это ничего в console.log.
Чего вы ждали? Чуда? Чудес не бывает.


Асинхронный код нельзя отдать синхронно.
Пишите:
const pendingPromise = fetch...;
export default pendingPromise;
import pendingSummary from './modules/getData';
pendingSummary.then(console.log);

Или типа того.
__________________
29375, 35

Последний раз редактировалось Aetae, 04.08.2021 в 23:39.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2021, 10:36
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,775

Сообщение от DVV
как можно организовать fetch запрос модулем, чтобы передавать в него различные url и другие параметры
А в какой момент вы собираетесь передавать параметры и откуда?
У Вас fetch срабатывает во время компиляции модуля.
Это происходит, когда все модули уже загружены, построены схемы зависимостей.
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2021, 10:41
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Согласен, что я тут наговнокодил. Теперь работает, данные выводятся в консоль. А как мне сделать, чтобы я их мог передать в файле index уже в другую функцию, например, для дальнейшей обработки и использования?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос в формате JSON pokk Общие вопросы Javascript 5 01.12.2017 16:34
Не отправляется 2й запрос после 1го. (XMLHttpRequest) Артист AJAX и COMET 6 05.10.2016 00:37
backbone.js: fetch запрос только по нужным атрибутам модели yerzhik Библиотеки/Тулкиты/Фреймворки 1 09.06.2013 19:32
Запрос на сервер Serjuk AJAX и COMET 6 04.06.2012 03:09
Запрос - ответ(VK,json) Slawaq Серверные языки и технологии 4 25.09.2010 00:28