2016-12-21 9 views
0

Ich verwende fetchApi, um Daten von meiner API zu erhalten. In meinem RequestHelpers.js, das tue ich diesen CodeWie erhalten Sie Antwortdaten außerhalb der Versprechenskette von Fetch?

module.exports = { 
 
    fetchQuizCollection(){ 
 
     return fetch(HOST+API_KEY) 
 
     .then((response) => response.json()) 
 
     .then((responseData) => { 
 
      let gameData = responseData 
 
      console.log(responseData) //It work 
 
      return responseData 
 
     }) 
 
     .done(); 
 
    } 
 
}

Und ich rufe diese Funktion in einer anderen Datei konnte ich nicht meine response

let sampleQuiz = RequestHelpers.fetchQuizCollection() 
    console.log(sampleQuiz) //undefined 

gibt es eine Möglichkeit, Daten außerhalb des Versprechens zu erhalten?

Antwort

2

Sie behandeln asynchronen Code so, als ob er synchron ist. Die fetchQuizCollection() ist asynchron, daher sind die zurückgegebenen Daten nicht verfügbar, wenn der Protokollierungscode ausgeführt wird. Sie müssen warten, bis alle .fetch() Funktionen abgeschlossen sind.

Gerade fetchQuizCollection() Rückkehr ein Versprechen lassen von

return fetchQuizCollection(){ 
    return fetch(HOST+API_KEY) 
    .then((response) => response.json()) 
    ... 

anderen return wie unten hinzufügen und Sie die sampleQuiz in einer .then() Funktion zugreifen können.

let sampleQuiz = RequestHelpers.fetchQuizCollection() 
    .then((sampleQuiz) => { 
     console.log(sampleQuiz); 
    }); 
Verwandte Themen