发现问题
标题字数限制,这里较为详细地描述下:
先showToast,再hideToast,然后再show另外一个toast。此时实际效果为第1个toast正常显示、正常隐藏,然后就没了
放到实际项目中的问题表现为:
我基于__wx.request__封装了一个叫做__request__的公用方法
在调用__wx.request前会__show__一个__icon__为__loading__的__toast
然后在wx.request的__success__回调里__wx.__hideToast()
然后再调用__request__的回调函数。这时,如果request的回调函数里也有个__showToast__,那么不好意思,这第二个toast是压根不会显示的
问题追溯
据官方说是修复了,然而PC模拟器和安卓都正常,唯独iOS至今没有修复
不巧今天踩到坑,我打算用__wx.showLoading__来替代上面说的“icon为loading的toast”。这样__wx.hideLoading__跟第二个__toast__就不冲突了吧?
是的,你没看错,hideLoading__会隐藏掉__toast,这个BUG也是至今没修复。也就是说我依然还在坑里
猜测原因
偶然注意到PC模拟器和安卓上的toast、loading的show和hide都没有过渡动画,而iOS上的却有
怀疑是iOS上的过渡动画时间并没有算在duration内,如果在过渡动画期间内调用hide和show,此时toast实例还并没有完全删除,也就导致第二个toast出不来
临时解决方案
那么是否可以用setTimeout来尝试临时解决呢?我一开始延迟100ms,无效。后来逐渐调整到300ms,差不多刚好就是第一个toast渐隐消失完毕后第二个toast就跟着渐隐出现了。至此,这个问题就算是临时解决了