这个promise为什么在then里面打印不出来结果呢

这是小程序里面的代码,现在是getStorage进入了fail回调

const ajax = (option='',data=null,type='POST',t=0)=>{
    return new Promise((resolve,reject)=>{
        wx.getStorage({
            key: 'openid',
            success: (res)=> {
                data = data || {openid:res.data}
                console.log(data,"C") //data 3
                app.util.request({
                    'url': 'entry/wxapp/' + option,
                    data: data,
                    method: type,
                    cachetime: t,
                    success: (res) => {
                        console.log(res,"D") //res数据 4
                        resolve(res)
                    },
                    fail: (res) => {
                        reject(res)
                    }
                })
            },
            fail:(res)=>{
                wx.login({
                    success:(res)=>{
                        console.log(res)
                        const code  =res.code
                        app.util.request({
                            'url': 'entry/wxapp/open',
                            data:{
                                code:code
                            },
                            success: (res) => {
                                console.log('没有找到',"A") //没有找到 1
                                wx.setStorage({
                                    key: 'openid',
                                    data: res.data.openid,
                                    success:(r)=>{
                                        console.log('重接口',"B") //重接口 2
                                        ajax(option,data,type,t);
                                    }
                                })
                            },
                            fail: (res) => {
                                ajax(option, data, type, t);
                            }
                        })
                    }
                })
            }
        })
    })
}
const getPra = ()=>ajax('user')
getPra().then(res=>{
          console.log(res) //这里没有打印出来
      })

打印的顺序是ABCD,感觉在进入fail回调之后重新调用ajax成功了啊,为什么后面的then打印不出来东西呀,求大神讲解一下

阅读 3.7k
2 个回答

你调用的resolve不是最开始的那个

直接调用ajax('user').then(res => console.log(res))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题