作者: 蔣歡
問題:
在部分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要慢一點。 如果進行非同步操作並全域性賦值時,要注意非同步返回生效的時機。