小程序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(黃先生)
在線留言:
微信掃碼,關注我們
相關文章
  • 微信小程序放出新功能,傳送門開啟更便捷

    為了讓微信小程序在使用上能夠更加便捷,微信官方又開放了兩個新功能,作為便捷的“傳送門”來讓小程序本身引流、為公眾號引流的效果更進一步

  • 微信小程序開發能為企業品牌策劃起到什么作用?

    任何行業在微信平臺中去做品牌策劃的時候,可以從品牌的創新度、體驗效果以及觸發分享的效果這三個方面去考慮。

  • 專屬定制開發微信小程序,促進企業移動營銷建設

    目前,網絡營銷已經成為企業營銷的主要模式,而隨著智能手機的發展與廣泛使用,移動化營銷更是成為網絡營銷的重中之重。在微信這個社交平臺上,隨之出現的微信公眾號、微信小程序等營銷產品。

  • 廣州微信小程序開發:論小程序線下的發展空間

    小程序的出現后,在剛開始卻沒有像業界傳說中那么令人滿意,甚至在經過一段時間的體驗之后

  • 微信小程序后臺返回json出現報錯的解決方法

    微信小程序與java后臺進行交互,需要獲取json數據顯示到頁面,但是有時候會出現小程序鏈接java后臺,但調用起來后臺并不能獲取到

  • 廣州小程序開發公司總結微信小程序最近升級了哪些新能力

    微信官方通過微信公開課向外界宣布,他們在微信小程序開發上又有新動作,各種新能力說升級就升級

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