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