小程式 onLaunch在onLoad後執行問題
阿新 • • 發佈:2018-12-04
專案中遇到這樣一個問題就是需要登入之後存一個id然後發現第一次進來的時候登入方法在index的方法後執行 拿不到想要的值
解決辦法
1.就是可以加一個啟動頁 做個緩衝
2.用promise
直接看程式碼例項吧
這是我的app.js
//app.js App({ onLaunch: function(options) { // 小程式啟動邏輯 // 1. 登入 // 2. 檢視使用者是否授權 // 3. 獲取使用者的裝置資訊 var thisPage = this; console.log(options); if (options.path !== "pages/index/index") { console.log(1111); this.globalData.destPath = options.path; } wx.showLoading({ title: "登入中", mask: true }); }, // login getLogin() { var that = this; return new Promise(function(resolve, reject) { // 登入 wx.login({ success: res => { console.log(res); //todo 傳送 res.code 到後臺換取 openId, sessionKey, unionId wx.request({ url: that.globalData.serverHost + "/sa/login", data: res.code, method: "post", success: function(res) { console.log(res); wx.hideLoading(); if (res.data.code === 0) { resolve(res); } else { wx.showToast({ title: "登入失敗,請重新啟動小程式", mask: true }); reject('error'); } }, fail: function(data) { wx.hideLoading(); console.log(data); } }); } }); }); }, globalData: { userInfo: null, authorized: false, systemInfo: null, systemInfoStr: null, sessionToken: "", } });
重點再這
千萬別漏掉成功裡的resolve(res);不然沒辦法執行then方法
這是index。js
onLoad: function() {
var that =this;
app.getLogin().then(function (res) {
console.log(res)
that.attached();//初始化頁面資料
})
},