鍍金池/ 問答/Java  HTML/ 微信小程序中異步獲取的數(shù)據(jù)如何在其他頁面中使用?

微信小程序中異步獲取的數(shù)據(jù)如何在其他頁面中使用?

業(yè)務(wù)環(huán)境
我在app.js中調(diào)用了后臺接口獲取了用戶信息,并存儲在globalData中。
在app.json的pages中的第一個是A頁面,我的理解是pages里的第一個就是進入小程序的首頁。
我在A頁面中會調(diào)用另一個接口,但是參數(shù)是app.js中調(diào)用接口返回的數(shù)據(jù)。
問題
當(dāng)進入小程序后,自動進入了A頁面。app.js中的請求已經(jīng)發(fā)送(返回的數(shù)據(jù)還沒有拿到),但是此時在A頁面中調(diào)用接口的參數(shù)還是underfind(參數(shù)就是app.js里的返回的數(shù)據(jù)),所以導(dǎo)致調(diào)用失敗。

微信小程序里有像vue那種監(jiān)聽某些數(shù)據(jù)的方法嗎?或許我可以監(jiān)聽app.js里返回的數(shù)據(jù),當(dāng)改變了(視為拿到數(shù)據(jù)了)再去A頁面中調(diào)用接口。但是我不知道是不是有這種方法,或者有別的方法可以解決這樣的問題。
請問這種應(yīng)該怎么解決?

回答
編輯回答
陌如玉

方法一:小程序沒有很好的監(jiān)聽方法,我的做法是增加一個啟動頁,在啟動頁面里調(diào)用加載需要的初始化數(shù)據(jù),確保所有數(shù)據(jù)都被加載。

方法二:按你的需求起始沒必要做監(jiān)聽這么麻煩,你直接通過函數(shù)回調(diào)或者promise來處理,在app.js中增加獲取數(shù)據(jù)的方法,如getUserInfo,將返回結(jié)果通過回調(diào)傳回來,在方法中判斷是否有緩存,有則直接從存儲中取數(shù)據(jù)返回即可。這樣你的頁面在顯示前會確保數(shù)據(jù)被拿到。

2017年3月3日 10:06