首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回嵌套承诺但未找到响应

返回嵌套承诺但未找到响应
EN

Stack Overflow用户
提问于 2020-06-10 16:46:12
回答 1查看 41关注 0票数 0

我在这里读了很多问题,但仍然找不到答案。这可能意味着我问错了问题,但无论如何。

我正在尝试使用REST后端在Vue.js中构建我的第一个应用程序,它将使用JWT令牌进行身份验证。

我正在构建底层将使用axios发出ajax请求的层。

上面的层处理身份验证、JWT令牌、超时等。

然后我对Vue进行了服务,商店和组件

因此,我的问题是如何构建这些层,以便在身份验证错误时,我可以拦截401个需要更新登录的返回,并将承诺传递到链上。

我读到here,我不应该创建返回新的承诺,而是应该返回原来的承诺。

我看到的是,来自getMails的返回有未定义的结果。

这是我的密码:

代码语言:javascript
运行
复制
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/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 15:28:38

多亏了Raja Jaganathan,我错过了等待axios().then行的返回,因此完整的工作代码如下所示。我还更新了上面的JSFiddle。

代码语言:javascript
运行
复制
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);
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62308815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档