前言
在開發項目的時候遇到從全局獲取用戶信息,邏輯是從app.js中的onLauch獲取,page頁面的onLoad拿到數據填充到頁面。遇到的問題是onLauch與onLoad是異步的,沒辦法從頁面判斷app.js中獲取數據的先后,於是參照網上的方式用回調進行處理。
代碼
app.js
App({ globalData: { //需要獲取的數據 userInfo: null, //回調函數 cb: null }, onLauch: function(){ //異步獲取用戶數據 wx.request({ url: '/api/getUserInfo', success: res => { this.globalData.userInfo = res.data.userInfo; cb && cb(res.data.userInfo); } }) } })
index.js
const app = getApp(); Page({ data: {}, onLoad: function(){ if(app.globalData.userInfo){ this.setData({ userInfo: app.globalData.userInfo }) } else { app.globalData.cb = (userInfo) => { this.setData({ userInfo }) } } } })