【小程式踩坑系列5】小程式內多重呼叫原生promise,無返回,無報錯,程式碼卡住

微信小程式經驗分享發表於2017-12-19

作者: 蔣歡

問題:

在部分IOS機型上,小程式內使用原生promise實現非同步,在巢狀四層後,Promise的resolve和reject均無返回。

環境:

使用者機型:iPhone 7
系統版本:IOS 10.3.3
微信版本:6.5.21
部分ios使用者可以穩定復現。

原因:

微信側表示IOS 10下小程式使用的是原生的promise,頁面由 WKWebView 來渲染的。因此網頁也會有同樣的問題,但我們還未在H5下得到驗證。
之前微信曾修復過IOS 8 下類似問題記錄

解決方案:

換成第三方庫pinkie.js,實現promise,使用者問題得到解決。

風險:

目前還沒有遇到任何相容性問題上報,但pinkie裡手動實現的promise比系統原生promise要慢一點。 如果進行非同步操作並全域性賦值時,要注意非同步返回生效的時機。

相關文章