Как вернуть ответ из выборки в javascript - PullRequest
0 голосов
/ 27 марта 2020

У меня проблемы с возвратом ответа на вызов API в моем проекте React Native.

let response = fetch('http://3.133.123.120:8000/auth/token', {
    method: "POST",
    headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        client_id: 'NTMtzF7gzZPU9Ka35UFsDHvpR8e4D1Fy4OPRsurx',
        grant_type: 'password', 
        username: user, 
        password: pass, 
    })
})
.then((response) => response.json())
.then((response) => this.setState({jsonData: response}))
.then(() => alert('resposne jsonData: ' + JSON.stringify(this.state)));
alert('resposne jsonData: ' + JSON.stringify(response))

Приведенный выше код возвращает правильный ответ в нижнем выражении .then (), однако я не смог использовать данные вне оператора fetch ().

Все, что я пытался использовать вне функции fetch () (например, мое предупреждение в нижней строке), дало мне следующее ...

{"_ 40": 0, "_ 65": 0, _55 ": null," _ 72 ": null}

Обратите внимание, что все это внутри React Компонент класса

1 Ответ

1 голос
/ 27 марта 2020

fetch возвращает Promise: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

У вас уже есть доступ к значению в этом финале. Если вы ищете способ использовать приведенное ниже значение без обратного вызова, вы можете рассмотреть стиль async/await и обернуть этот код в функцию, подобную следующей:

const fetchData = async () => {
  const results = await fetch() // put your fetch here
  alert(results);
};

асинхронная / ожидающая информация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

...