为了账号安全,请及时绑定邮箱和手机立即绑定

关于微信小程序中异步登录的问题? 文件执行顺序的问题 与promise问题

关于微信小程序中异步登录的问题? 文件执行顺序的问题 与promise问题

幕布斯6054654 2019-03-20 18:19:55
目前我将登录操作写在了 app.js 中, 获取到微信的 code 后,向自己的服务器获取验证 access-token .代码如下app.js    onLaunch: function () {        wx.login({            success: res => {                // 发送 res.code 到后台换取 openId, sessionKey, unionId                config.code = res.code;                this.initUserInfo();            }        })    },            // 初始化用户信息    initUserInfo: function () {        wx.request({            url: config.baseUrl + "/index.php?m=Api&c=User&a=initUserInfo",            method: 'POST',            header: {                "Content-Type": "application/x-www-form-urlencoded"            },            data: {                source_type: 'wxapp',                code: config.code,            },            success: function (res) {                if (res.data.status == true) {                                        config.uid = res.data.data.uid;                    config.accessToken = res.data.data.wxapp_access_token;                          } else if (res.data.status == false) {                    console.log(res.data.data);                } else {                }            }        })    },在另一个文件 met.js 中需要通过获取的 uid accessToken 来请求获取数据.代码如下met.js    eggGetRemoteWords: function() {        var self = this;        wx.request({            url: app.config.baseUrl + "/index.php?m=Api&c=Learning&a=getLearningWord",            method: 'POST',            header: {                "Content-Type": "application/x-www-form-urlencoded"            },            data: {                uid: app.config.uid,                access_token: app.config.accessToken            },            success: function (res) {                if (res.data.status == true) {                    self.setData({                        'word.wordArray': res.data.data,                    }) 但是目前总是 met.js 中的函数 eggGetRemoteWords 总早于 app.j s中 initUserInfo 登录函数执行,导致无法获取到数据 因为 js 异步的原因. 请问大家这应该怎么处理呢? 我了解到 promise 请问如果目前的需求将如何实现呢?
查看完整描述

4 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

用async函数调用,initUserInfo和eggGetRemoteWords都封装成promise


查看完整回答
反对 回复 2019-04-02
?
largeQ

TA贡献2039条经验 获得超7个赞

用promise二次封装下你的request就行了


查看完整回答
反对 回复 2019-04-02
  • 4 回答
  • 0 关注
  • 629 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信