最近遇到一個問題,appjs的函數方法 會比 其余頁面的js后執行,也就是說,如果我在其余頁面用到了appjs里面的數據就會報錯,對於這個問題,我前思后想很多辦法,什么promise,什么typeof cb == "function" && cb(data),第一個吧稍感復雜,第二個呢有無法實時回調數據給其余頁面,導致必須得用定時器的辦法來監聽返回,后來得知一個辦法,十分霸道,而且簡單,代碼如下:
例如:index.js需要數據
var app = getApp()
//方法名自己定義
app.getInfoCallback = res => {
app.getInfoCallback = res => {
console.log('查看得到的數據:', res)
}
app.js
if (this.getInfoCallback ){
//data 為需要傳入的數據
this.getInfoCallback (data)
}
解釋一下大概原理
在我們需要數據的地方定義一個方法在app.js上,當小程序運行到接收數據這個地方時,判斷一下這個方法是否存在,如果存在,那么說明其余頁面已經超前執行,那么傳入所需值,其余頁面的該函數會接收該值,程序運行正常
