【发布时间】:2020-09-30 04:16:04
【问题描述】:
我在这里阅读了很多问题,但仍然无法找到答案。这可能意味着我问错了问题,但不管怎样。
我正在尝试使用 REST api 后端在 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/
【问题讨论】:
-
这是您所期待的 - jsfiddle.net/n4b8hqsc/1 吗? api 函数缺少返回关键字,
-
非常好 - 谢谢!你想把它作为答案吗?
标签: javascript promise nested