Fetch возвращает обещание вместо фактических данных даже после использования 'then'

Я делаю простой вызов извлечения в моем компоненте, который выглядит следующим образом

    var x = fetch(SOME_URL, SOME_POST_DATA)
             .then((response) => response.json())
             .then((responseJSON) => {return responseJSON});

    console.log(x);

Вызов выполняется успешно, но консоль печатает обещание вместо данных. Что мне здесь не хватает?

1 ответ

То, как работают обещания, означает, что вам нужно responseJSON внутри обработчика для then(), Из-за асинхронной природы запросов внешний код будет возвращен к моменту разрешения обещания.

Поначалу может быть трудно разобраться, но это во многом похоже на "традиционный" AJAX-запрос - вы обрабатываете ответ в обратном вызове.

Чтобы взять ваш пример:

var x = fetch(SOME_URL, SOME_POST_DATA)
    .then((response) => response.json())
    .then((responseJSON) => {
       // do stuff with responseJSON here...
       console.log(responseJSON);
    });

Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Другие вопросы по тегам