import { methods, baseConfig, Global } from '../helpers/config'; import { noop, formatURLQuery } from '../helpers/util'; let stop = null; /** * @param {Object} finalRoute 格式化后的路由跳转规则 * @param {Object} NAVTYPE 需要调用的跳转方法 */ const uniPushTo = function (finalRoute, NAVTYPE) { return new Promise((resolve) => { const query = formatURLQuery(`?${finalRoute.uniRoute.query}`); const { APP } = baseConfig; const { url } = finalRoute.uniRoute; stop = setTimeout(() => { resolve(url); resolve = noop; // 执行完了就没了 确保不会被下一次执行 Global.LockStatus = false; // 跳转完成解锁状态 }, APP.switchPageOutTime); uni[methods[NAVTYPE]]({ url: url + query, ...finalRoute.route.animation, complete: () => { clearTimeout(stop); resolve(url); resolve = noop; // 执行完了就没了 确保不会被下一次执行 Global.LockStatus = false; // 跳转完成解锁状态 }, }, true); // 这里传递true 主要是兼容重写 uni.switchTab }); }; export default uniPushTo;