我在这里读了很多问题,但仍然找不到答案。这可能意味着我问错了问题,但无论如何。
我正在尝试使用REST后端在Vue.js中构建我的第一个应用程序,它将使用JWT令牌进行身份验证。
我正在构建底层将使用axios发出ajax请求的层。
上面的层处理身份验证、JWT令牌、超时等。
然后我对Vue进行了服务,商店和组件
因此,我的问题是如何构建这些层,以便在身份验证错误时,我可以拦截401个需要更新登录的返回,并将承诺传递到链上。
我读到here,我不应该创建返回新的承诺,而是应该返回原来的承诺。
我看到的是,来自getMails的返回有未定义的结果。
这是我的密码:
async function axios() { // emulate axios returning a promise
return new Promise((resolve, reject) => {
resolve('return from axios');
})
}
// authentication layer. check for 401 and use Promise.reject
async function api() {
await axios().then(
response => {
// if ( response.status==401 )
// Promise.reject(response.status)
console.log('api then: '+response)
return Promise.resolve(response+'~return from api');
})
}
// services layer builds query params etc...
async function getMails() {
return await api();
}
// vuex store to handle emails
// here just run js
getMails().then( function(response){
console.log('back from getMails with:'+response);
//let mails = response;
//console.log('mails: '+mails);
})
见JSFiddle:https://jsfiddle.net/chrisby/y6eocrm0/
发布于 2020-06-11 15:28:38
多亏了Raja Jaganathan,我错过了等待axios().then行的返回,因此完整的工作代码如下所示。我还更新了上面的JSFiddle。
async function axios() { // emulate axios returning a promise
return new Promise((resolve, reject) => {
resolve('return from axios');
})
}
// authentication layer. check for 401 and use Promise.reject
async function api() {
return axios().then(
response => {
// if ( response.status==401 )
// Promise.reject(response.status)
console.log('api then: '+response)
return Promise.resolve(response+'~return from api');
})
}
// services layer builds query params etc...
async function getMails() {
return api();
}
// vuex store to handle emails
// here just run js
getMails().then( function(response){
console.log('back from getMails with:'+response);
let mails = response;
console.log('mails: '+mails);
})
https://stackoverflow.com/questions/62308815
复制相似问题