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

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


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


我正在构建在底部的图层,这些图层将使用公理来发出 ajax 请求。


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


然后我就喜欢上了 Vue 的服务、商店和组件


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


我在这里读到,我不应该创造回报新的承诺,而应该回报原来的承诺。


我看到的是,来自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);

})

请参见 JS小提琴: https://jsfiddle.net/chrisby/y6eocrm0/


catspeake
浏览 80回答 1
1回答

阿波罗的战车

多亏了拉贾贾加纳坦邦,我错过了等待公理().then行的返回,所以完整的工作代码在下面。我还更新了上面的JS小提琴。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.rejectasync 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 jsgetMails().then( function(response){  console.log('back from getMails with:'+response);  let mails = response;  console.log('mails: '+mails);})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript