2016-12-21 5 views
0

Я использую fetchApi для получения данных из моего API. В моих RequestHelpers.js, я этот кодКак получить данные ответа за пределами цепочки обещаний 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(); 
 
    } 
 
}

И я называю эту функцию в другой файл, я не мог получить мой responseData

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

есть ли способ получить данные за пределами обещания?

ответ

2

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

Просто дайте fetchQuizCollection() возвращающие обещание, добавив еще один return ниже

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

и вы можете получить доступ к sampleQuiz в .then() функции.

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