跳到主要内容

调用技巧

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())
}
},
})