连续调用wx.navigateTo会跳转失败
问题概述
在wx.navigateTo的success回调函数中继续调用wx.navigateTo,页面跳转与预期不一致。
复现方法
1. 使用代码片段 https://developers.weixin.qq.com/s/PbxxKcmZ7Q7e
- 点击页面中的navigate按钮,将会通过递归进行多次页面跳转,代码如下:
const NAVIGATE_COUNT = 5; const navigate = (times) => { const url = `/page/index?times=${times}`; console.log( 'navigate to' , url); wx.navigateTo({ url, success(res) { console.log( 'success' , times, res); if (times > 1) { navigate(times - 1); } }, fail(res) { console.log( 'fail' , times, res); } }) } navigate(NAVIGATE_COUNT); |
-
在模拟器和iOS上,会出现页面历史丢失的现象(可以通过后退查看页面栈,会发现数量比预期的少);在Android上没有此问题
-
点击页面中的navigate with timeout按钮,该按钮与前者的区别在于会在success后使用setTimeout延迟300ms再进行调用
success(res) { console.log( 'success' , times, res); if (times > 1) { navigate(times - 1); } }, |
- 在模拟器/iOS/Android中均可以正常跳转