Я делаю свой вызов API, но я не могу вернуть его моему создателю действия - PullRequest
0 голосов
/ 25 мая 2018

У меня есть создатель действий, он вызывает мой API (который является его собственным файлом), API работает, также работает создатель действий.Я в состоянии console.log. Мой ответ от API, моя проблема - вернуть его моему создателю действия, где был сделан вызов функции API.Спасибо.

**ACTION CREATOR**

import * as types from './actionTypes';
import FootballApi from '../api/footballApi';
import { loadLeag_Success } from '.';



//type
export const LOAD_LEAG_GAMES_SUCCESS = 'LEAGUE_GAMES_SUCCESS';

export function loadLeag_Game_Success(data){
    //console.log("before dis", data);
    return;
};


export function getLeaguesGames(idArr, date) { 
    return function(dispatch) {
        Promise.all(FootballApi.getLeaguesGamesAPI(idArr, date))
        .then(() => {
// .        I WANT TO RETURN IT HERE.
               console.log("returned")
               
            })
        //      .catch(error => {
        //         throw(error)
        //    })
    };
}

**API FILE**

export default class FootballApi {  
  static getAllLeags() {
    return fetch('https://apifootball.com/api/?APIkey=42f53c25607596901bc6726d6d83c3ebf7376068ff89181d25a1bba477149480&action=get_leagues').then(response => {
         return response.json();
      }).catch(error => {
        return error;
    });
  }

    static getLeaguesGamesAPI(idArr, date){
    
      return idArr.map((id)=>{
        return fetch(`https://apifootball.com/api/?APIkey=42f53c25607596901bc6726d6d83c3ebf7376068ff89181d25a1bba477149480&action=get_events&from=${date}&to=${date}&league_id=${id}`)
        .then(res =>{
          return res.json();
        })
          .then((game) => {
            if(!game.error){
              //console.log("game")
              return game;
          }
        })
      })
    }
};

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Предполагается, что у вас уже есть промежуточное ПО (например, thunk или saga).Ваша функция разрешения Promise.All не принимает параметр данных.

Promise.all(FootballApi.getLeaguesGamesAPI(idArr, date))
    .then((data) => {
        dispatch(loadLeag_Game_Success(data));
    });
0 голосов
/ 25 мая 2018

Я понял это, я удалил -

   .then((game) => {
        if(!game.error){
         //console.log("game")
      }
     })

и поместил его в моего создателя действий.все работает так, как мне нужно.спасибо.

0 голосов
/ 25 мая 2018

Попробуйте сделать это:

СОЗДАТЕЛЬ ДЕЙСТВИЙ

import * as types from './actionTypes';
import FootballApi from '../api/footballApi';
import { loadLeag_Success } from '.';



const LOAD_LEAG_GAMES_SUCCESS = 'LEAGUE_GAMES_SUCCESS';



export const loadLeag_Game_Success = (data) => {
    console.log(data)// The data will be here
 };


export function getLeaguesGames(idArr, date) { 
    return function(dispatch) {
        Promise.all(FootballApi.getLeaguesGamesAPI(idArr, date))
        .then((data) => {

               dispatch(loadLeag_Game_Success(data));
            })
              .catch(error => {
                 throw(error)
            })
    }; }
...