小程序onLaunch執行異步,如何解決onLoad先執行的問題?

2018/10/1 18:34:29
摘要: 小程序開發時,按照事件順序,小程序初始化觸發APP的onlaunch后,在去是行頁面Page的onload。但現實常常是,由于onlaunch

小程序開發時,按照事件順序,小程序初始化觸發APP的onlaunch后,在去是行頁面Page的onload。但現實常常是,由于onlaunch里在請求獲取是否有權限、等待返回值的時候,頁面page里的onload事件已經執行了。那么,這個問題該如何去解決呢?小編get到一種方式,下面跟大家分享一下。

  要想實現等onLaunch請求完再執行Page的onLoad,其實可以采用定義一個回調函數的方法。Page頁面要判斷一下當前app.globalData.employId是否有值,沒有的話,則定義一個app方法(回調函數)app.employIdCallback = employId => {...}。

而App頁面在請求success后,去判斷是否有Page頁面定義的回調方法,如果有就執行該方法。另外,因為回調函數是在Page里面定義的,所以方法作用域this是指向Page頁面。

下面我們看一下示例代碼:

//app.js

App({

  onLaunch: function () {

    wx.request({

      url: 'test.php', //僅為示例,并非真實的接口地址

      data: {

      },

      success: function(res) {

        this.globalData.employId = res.employId;

        //由于這里是網絡請求,可能會在 Page.onLoad 之后才返回

        // 所以此處加入 callback 以防止這種情況

        if (this.employIdCallback){

           this.employIdCallback(res.employId);

        }

      }

    })

  },

  globalData: {

    employId: ''

  }

})

 

//index.js

//獲取應用實例

const app = getApp()

Page({

  data: {

    albumDisabled: true,

    bindDisabled: false

  },

  onLoad: function () {

    //判斷是用戶是否綁定了

    if (app.globalData.employId && app.globalData.employId != '') {

      this.setData({

        albumDisabled: false,

        bindDisabled: true

      });

    } else {

      // 由于 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回

      // 所以此處加入 callback 以防止這種情況

      app.employIdCallback = employId => {

        if (employId != '') {

          this.setData({

            albumDisabled: false,

            bindDisabled: true

          });

        }

      }

    }

  }

})

這樣,它的執行順序就變成如下:

[App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback


聲明:文章"小程序onLaunch執行異步,如何解決onLoad先執行的問題?"為互誠科技—微信小程序開發公司的原創文章,轉載請注明出處,謝謝合作!
標簽:小程序干貨
電話咨詢:18011971195(黃先生)
在線留言:
微信掃碼,關注我們
相關文章
  • 品牌電商公司如何借力微信小程序開發來促進發展

    雖然微信小程序剛開始的定位是為用戶提供線下工具性服務,但卻也因為這個定位限制了小程序的發展以致帶來不滿意的用戶體驗與開發體驗。在后續的調整后,小程序也可以用作線上服務使用,

  • 從開發公司角度談微信小程序開發的實踐問題

    作為一個對微信小程序開發與運營有一定了解的開發公司小編,對于一些在開發工作期間的注意事項以及開發后的管理、運營問題

  • 影響廣州微信小程序定制開發費用的因素

    在目前的廣州微信圈市場上,不會存在每一個定制開發的小程序費用都一樣的情況,不同的功能需求、不同的開發主體以及市場環境都有可能成為影響開發價格的因素。

  • 小程序在未來的應用場景可以有哪些?

    現在的微信小程序應用場景除了線上之外,更多的是線下的。不過由于現在仍處于發展的初級階段,所以不是每個行業都能在小程序開發的服務范圍之內,一些仍未涉及到的行業還有待開發。這些有待開發的行業與應用場景,就是我們今天這篇文章要說的中心點。

  • 微信小程序開發三大需要明確的合作陷阱

    在尋求與微信小程序第三方開發公司合作的時候,企業商家可能會有遇到非正規開發公司的可能,這些公司開出的合作

  • 微信小程序開發帶來的創業競爭力與前景分析

    微信小程序的出現,在應用市場與微信平臺上都激起了一層層波瀾。它的優勢、它的新鮮感、它的想象空間都吸引了很多創業者的眼球。小程序

上海快三走势图上海快3形态走势