我已将 api 调用分为三层。 组件
、存储库
和apihelper
。我希望 refresh_tokens
的逻辑位于 apihelper.js
中。当我这样做时,似乎 apihelper
在获取 401
响应状态后再次运行,但它从未将数据传递回 组件
。我知道我可以将逻辑放在组件中重新运行它,但是当我添加更多调用时,似乎最终会出现大量重复代码。我觉得这可能是由于我对 javascript Promise 的理解浅薄造成的,但我是一个 javascript 初学者。
组件
<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'));
});
}
}
API助手
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);
}
})
}
}
最佳答案
啊啊啊我没有回电话。
return this.apiCall(url);
现在可以使用
关于javascript - 出现错误时重新运行函数并传递结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036813/