微信小程序中Callback回調函數


前言:微信小程序中,onLaunch 方法和 onLoad 方法是同時執行的,但是有時我們需要等 onLaunch 方法執行完畢之后在 onLoad 方法中獲取某個網絡請求得到的值,由於網絡請求有時會比較慢,所以 onLoad 方法可能在 onLaunch 方法之前執行,這時候我們可以自定義 Callback 回調函數來解決問題

實例:在小程序啟動時的 onLaunch 方法中網絡請求一組數據放入 globalData 全局變量中,在頁面的 onLoad 方法中獲取全局變量

app.js代碼

App({
  //小程序啟動后觸發
  onLaunch: function() {
    http.postRequest("Home/GetSysInfo", "", res=> {
      //存入全局變量
      this.globalData.tabtext = res.Data;
      // 由於 GetSysInfo 是網絡請求,可能會在 Page.onLoad 之后才返回
      // 所以此處加入 Callback 以防止這種情況
      if (this.getSysInfoCallback) {
        this.getSysInfoCallback(res)
      }
    }, function(res) {
      console.log("網絡請求失敗!")
    });
  },
  //設置全局對象
  globalData: {
    tabtext: [], //系統文字信息
  }
})

.js代碼

onLoad: function() {
  //Object.keys().lenght判斷全局數組中是否有值
  if (Object.keys(getApp().globalData.tabtext).length>0) {
    //如果有值,則從全局變量中取值
    this.setData({
      titletext: app.globalData.tabtext[0].Desc
    })
  } else {
    //如果無值,調用Callback回調函數直接取值
    app.getSysInfoCallback = res => {
      this.setData({
        titletext: res.Data[0].Desc
      })
    }
  }
}

End!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM