
wx.login({ success (res) { if (res.code) { //发起网络请求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('登录失败!' + res.errMsg) } } }) //base.js getOpenid(){ wx.login({ success (res) { if (res.code) { //发起网络请求 let postData = { code: res.code } this.$post("https://test.com/onLogin",postData).then(res => { return res.results.openid }) } } }) }, //调用的时候 this.$base.getOpenid() console.log 后 出来的“undefined” 1 airyland 2020-03-27 14:09:00 +08:00 via iPhone 理解下异步,封装成 promise |
2 uchihaObito 2020-03-27 15:39:42 +08:00 getOpenid() { return new Promise((resolve, reject) => { wx.login({ success: async res => { const { code } = res; if (!code) { return reject('登录失败!' + res.errMsg); } const { results: { openid } } = await this.$post('https://test.com/onLogin', { code }); resolve(openid); }, fail: err => { reject(err); } }); }); } //调用的时候 this.$base.getOpenid().then(openid => console.log(openid)); |
3 kukala OP @uchihaObito 感谢回复! 对于异步没接触过,有的地方还是有点不明白 比如:小程序的转发 通过 getOpenid,怎么赋值给 openid 就不知道了 ``` onShareAppMessage(option){ this.$base.getOpenid().then(openid => { console.log(openid) //这里可以显示 openid 的值 }).catch(err => { console.error(err) }) let title = this.detail.title let path = 'pages/index/index/scene='+ openid //怎么赋值到这个 openid 变量就不知道了 let imageUrl = this.detail.thumb return { title: title, path: path, imageUrl:imageUrl, success: function (res) { console.log("转发成功:" + JSON.stringify(res)); }, fail: function (res) { console.log("转发失败:" + JSON.stringify(res)); } } }``` |
4 uchihaObito 2020-03-27 17:40:44 +08:00 @kukala 这样不行,改下逻辑,必须授权登录拿到 openid 了才可以分享,做个分享按钮的显示隐藏,而且为了安全不应该传 userId 么。 |
5 uchihaObito 2020-03-27 17:41:25 +08:00 @kukala 不知道你的需求是什么 |
6 kukala OP @uchihaObito 只是举个例子,实际情况是把用户的 ID 赋值给到 onShareAppMessage()里的 path 去,但是不知道怎么给他赋值 |