调用技巧
1. 小程序 wx.login
需求:进入小程序调用 wx.login
获取code,然后调用后台接口获取用户的 openid
,如果在 storage
中存在 openid
,直接使用去处理业务,否则就再调用一次 wx.login
获取code,得到 openid
,再处理业务。
// App.js 定义方法
App({
WXlogin: function () {
return new Promise((resolve, reject) => {
wx.login({
success: res => {
console.log('获取code:', res.code)
// ajax 获取 openid,现在使用定时器模拟请求
setTimeout(() => {
let openid = '我是获取的openid'
wx.setStorageSync('openid', openid)
resolve({openid})
}, 1000)
},
fail: () => {
reject(new Error('获取code失败'))
wx.showToast({
title: '获取code失败'
})
}
})
})
}
})
// page/index.js
//index.js
//获取应用实例
const app = getApp()
Page({
onLoad() {
this.login(this.getSomething)
},
// 需要的业务回调
getSomething(openid) {
console.log('do something', openid)
},
//事件处理函数
login(fn) {
// 判断是否获取了openid,如果没有获取那就登录以后获取,最后执行 fn 回调
let openid = wx.getStorageSync('openid') || false
if (openid) {
fn(openid)
} else {
app.WXlogin().then(() => fn())
}
},
})