(新手填坑)微信小程序API回調函數的“延遲”

微信小程序API回調函數的阻塞

問題現象

bindTest 是按鈕觸發事件,我按兩下打印的LOG如下(第1次按和第2次按,打印的順序不一致???):
alt text

而代碼是這樣的:
alt text

app.getUserInfo就是官方DEMO示例:
alt text

日誌打印是1在2前,實際第一次點按鈕觸發bindTest方法後,卻發現先輸出2再輸出1,第二次以後都是正常的。

具體原因

wx.login和wx.getUserInfo的回調函數是異步的!
正因如此,app.getUserInfo的cb也就有第一次是異步執行的情況,導致先輸出2,相當於還沒有獲取到用戶信息時,這兩個接口就直接返回了,真正獲取用戶信息的代碼還在等待CPU調度,延後執行。
這也能解釋我這些天的另一個疑惑“爲何第一次調用login,getUserInfo總是拿不到正確信息”,其實不是拿不到,只是有點“延遲”而已!

擴展

據微信開發者社區前輩介紹,微信小程序API接口有些是異步的,有些是同步的,新手在使用時需要注意了。

發佈了30 篇原創文章 · 獲贊 75 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章