2017-12-30 7 views
1

API 호출을 세 개의 레이어로 구분했습니다. component, repositoryapihelper입니다. refresh_tokens에 대한 로직을 apihelper.js에 입력하고 싶습니다. 이 작업을 수행하면 401 응답 상태를 얻은 후 다시 실행되는 것처럼 apihelper이 실행되지만 데이터는 다시 component으로 전달되지 않습니다. 내가 그 논리를 구성 요소에 재실행시킬 수는 있겠지만 더 많은 호출을 추가 할 때 많은 중복 코드가되는 것처럼 보입니다. 그것이 아마 자바 스크립트 약속에 대한 나의 얕은 이해로 인한 것 같지만 저는 자바 스크립트 초보자입니다.오류시 함수를 다시 실행하고 결과를 넘겨주세요.

구성 요소

<script> 
import breweryrepository from '@/repository/breweryrepository.js' 
export default { 
    mounted() { 
     this._getTotalBreweries(); 
    }, 
    methods: { 
     _getTotalBreweries() { 
      breweryrepository.getTotalBreweries()    
       .then((response) => { 
        if(response.data) 
        { 
         this.totalNumberOfBreweries = response.data.totalBreweries; 
        } 
       }) 
     } 
    }, 
    data() { 
     return { 
      totalNumberOfBreweries: '' 
     } 
    } 
} 
</script> 

저장소

import apihelper from '@/helpers/ApiHelper.js'; 

export default { 

    getTotalBreweries() { 
    return new Promise(function(resolve, reject) { 
     resolve(apihelper.apiCall('/brewery/totalnumber')); 
    });  
    } 
} 

Apihelper

import axios from 'axios'; 
var querystring = require('querystring'); 
import { store } from '../store/store.js'; 
import auth from '@/auth/auth.js' 

export default {  
    apiCall(url) { 
    return axios.get(store.state.baseUrl + url, { 'headers': auth.getAuthHeader() }) 
     .catch((error) => {      
     if(error.response.status == 401) 
     { 
      console.log("401 error, running refresh and apicall again"); 
      auth.refreshToken(); 
      this.apiCall(url);       
     } 
    }) 
    } 
} 

답변

0

Aaaaand 내가 전화를 반환하지 않았습니다. 지금

return this.apiCall(url); 

작품

관련 문제