Javascript Fetch API - jak zapisać wyjście do zmiennej jako obiektu (Nie obietnicy)
Proszę, Jak mogę zapisać wyjście fetch do zmiennej - aby móc pracować z nią jak z obiektem?
Oto kod:
var obj;
fetch("url", {
method: "POST",
body: JSON.stringify({
"filterParameters": {
"id": 12345678
}
}),
headers: {"content-type": "application/json"},
//credentials: 'include'
})
.then(res => res.json())
.then(console.log)
Finał console.log
pokaże obiekt. Ale kiedy próbowałem zapisać go do zmiennej {[2] } niż console.log(obj)
nie będzie trzymać obiektu, ale obietnica.
Jakiś pomysł proszę, jak przekształcić go w obiekt zapisany w zmiennej?
2 answers
Aby uzyskać nowoczesne podejście async / wait , zapoznaj się z odpowiedzią @ PrathameshMore poniżej
.json()
jest metodą asynchroniczną (sama zwraca obietnicę), więc w następnej .then()
var obj;
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(res => res.json())
.then(data => obj = data)
.then(() => console.log(obj))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-28 19:26:23
Zamiast przechowywać w zmiennej, Utwórz funkcję, która zwróci dane, a następnie przechowuje je w zmiennej. Więc może być dostępny w całym pliku.
async fetchExam(id) {
try {
const response = await fetch(`/api/exams/${id}`, {
method: 'GET',
credentials: 'same-origin'
});
const exam = await response.json();
return exam;
} catch (error) {
console.error(error);
}
}
Następnie wywołaj tę funkcję, aby uzyskać dane
async renderExam(id) {
const exam = await fetchExam(id);
console.log(exam);
}
Update
Z aktualną wersją Node.js v14. 3. 0 obsługuje asynchroniczne oczekiwanie na najwyższym poziomie
import axios from 'axios';
const response = await axios('https://quote-garden.herokuapp.com/api/v2/quotes/random');
console.log(response.data);
Uruchamianie tego pliku za pomocą node --harmony-top-level-await top-level-async-await.js
Wyjście
Więcej Szczegółów: https://medium.com/@pprathameshmore/top-level-await-support-in-node-js-v14-3-0-8af4f4a4d478
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-30 04:11:48