2016-08-19 21 views
8

Zastanawiam się, w jaki sposób mogę zwrócić obietnicę z Axios? Nie jestem pewien, czy potrzebuję użyć Interceptorów?Powitanie obietnicy od Axios?

Mam ten kod teraz

export function fetchStorage() { 
    return function (dispatch) { 
     return new Promise(function(resolve, reject) { 
     if (1 === 1) { 
      resolve('it works!'); 
     } else { 
      reject(':('); 
     } 
     }); 
    }; 
} 

i

this.props.fetchStorage().then(function() { 
      console.log('then'); 
     }); 

teraz powiedzieć, że chce zmienić fetchStorage coś zrobić za pośrednictwem ajax i chciałbym mieć go jak

var instance = axios.create({ 
      baseURL: 'http://localhost:54690/api', 
      timeout: 2000, 

     }); 

     instance.get('/Storage/Get') 
      .then(function (response) { 
       console.log(response); 
      }) 
      .catch(function (error) { 
       console.log(error); 
      }); 

jak mogę zwrócić obietnicę, zamiast robić to tutaj?

Edit

Tylko dla wyjaśnienia dlaczego robię to ja mam coś takiego

componentWillMount() { 
     this.props.setPreLoader(true); 
     this.props.fetchStorage().then(function() { 
      this.props.setPreLoader(false); 
     }); 
    } 

export function fetchStorage() { 
    return function (dispatch) { 
     return new Promise(function (resolve, reject) { 
      axiosInstant.get('/Storage/Get') 
       .then(function (response) { 
        let payload = response.data; 
        console.log(payload); 
        dispatch({ type: actions.FETCH_STORAGE, payload: { storages: payload } }); 
       }) 
       .catch(function (error) { 
        console.log(error); 
       }); 
     }); 
    }; 
} 
+1

Dlaczego nie 'instance.get powrotu ('/ Przechowywanie/Get ")" Czy coś tu brakuje? –

+0

cóż, używam wzoru redux, więc muszę wysłać przesyłkę i jeśli po prostu wrócę tak jak ty, to zawsze muszę pamiętać, aby wysłać tę wysyłkę za każdym razem, gdy używam tej funkcji. – chobo2

+0

@ chobo2 Nie rozumiem, dlaczego nie zwróciłeś obietnicy, którą już daje ci aksios. –

Odpowiedz

-5

Zobacz przykładowe:

return new Promise(function (resolve, reject) { 
    var instance = axios.create({ 
     baseURL: 'http://localhost:54690/api', 
     timeout: 2000, 
    }); 
    instance.get('/Storage/Get') 
     .then(function (response) { 
      if(1 === 1) 
      resolve(response); 
     }) 
     .catch(function (error) { 
      reject(error); 
     }); 

}); 
+1

Ah, pomyślałam, że być może powrócił na obietnicę i nie musiałem jej pakować. – chobo2

+0

@ chobo2 z pewnością wygląda na to, że zwraca obietnicę. lub, co najmniej możliwe do zastosowania. –