[图片] async await 需要Promise对象,你只对login方法进行了实例化,login里的ajax并没有,小程序原生ajax返回的并不是Promise对象,把获取token的接口另外写成一个函数,封装成promise,然后在 await this.login(res.userInfo.nickName); 下面 加载 await this.getToken(); 试一试
async 在真机中报错,开发者工具里不报错//调用处 wx.getUserInfo({ success: async (res) => { // 可以将 res 发送给后台解码出 unionId this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res.userInfo) } await this.login(res.userInfo.nickName); } }) //login的方法 async login(nickName: string){ let tempThis = this; let flag = 0; return new Promise((resolve) => { wx.login({ success: (res: any) => { if (res.code) { wx.request({ method: 'POST', url: 'https://xxxxxxx', data: { name: nickName, code: res.code }, success: (request: any) => { const res = request.data; tempThis.globalData.token = res.token; flag = 1; resolve({ status: flag}); } }); } else { console.log('获取用户登录态失败!' + res.errMsg); flag = 0; resolve({ status: flag}); } } }); }); } 在开发者工具中没有报错,在真机中报错 [图片]
2019-08-29