在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  Linux  HTML/ 小程序wx.request 數(shù)據(jù)異步獲取疑問(wèn)

小程序wx.request 數(shù)據(jù)異步獲取疑問(wèn)

微信小程序的wx.request是異步請(qǐng)求,在app.js onLaunch里進(jìn)行后臺(tái)交互獲取openid

APP({
    onLaunch:function(){
        //登錄
        wx.login({
            success:res => {
                var code = res.code
                if(code){
                    wx.request({
                        url:xxx,
                        method:xxx,
                        success: res =>{
                            var that = this;
                            console.log('app.js---onLaunch')
                            that.globalData.openid = res.data.openid
                        }    
                    })
                }
            }
        })
    }
})

在index.js中 onReady階段想獲取openid

const app = getApp()

...省略...

onReady:function(){
    console.log("index.js--onReady")
    console.log(app.globalData.openid)
}

結(jié)果如下圖

clipboard.png

我的目的是想在index.js頁(yè)面獲取openid然后進(jìn)行this.setData({})賦值操作,但由于異步的關(guān)系,這時(shí)候還沒(méi)有值。我嘗試了幾種異步方式,promise和 cb的方法,剛接觸javascript不久,思路還不是很清晰,有異步回調(diào)大神指點(diǎn)一二嗎?

回答
編輯回答
拮據(jù)

建議把獲取openid的方法封裝成一個(gè)函數(shù),在這個(gè)函數(shù)里,判斷storage里面是否有openid,有的話直接去storage里面的openid,沒(méi)有的話,發(fā)起請(qǐng)求,獲得openid,并且存儲(chǔ)到storage里面。目前來(lái)來(lái)說(shuō)小程序多頁(yè)面通信貌似沒(méi)有很靠譜的方法

2017年12月25日 15:44
編輯回答
悶騷型

樓上說(shuō)的方法挺好,不過(guò)沒(méi)必要存在storage里,就放globaldata里就行,判斷沒(méi)有就發(fā)起請(qǐng)求獲取,取得以后執(zhí)行一個(gè)回調(diào)函數(shù)傳進(jìn)來(lái),我建議這個(gè)方法放在util.js里

2017年6月5日 15:20
編輯回答
笨尐豬

題主是想要獲取 openId ?這個(gè)應(yīng)該是后臺(tái)來(lái)驗(yàn)證是誰(shuí)吧?
但是題主的問(wèn)題我覺(jué)得可以這樣,不用全局變量,在 app.js 用 wx.setStorageSync,然后在 index.js 用 wx.getStorageSync

2017年9月28日 23:27