登录后继续执行方法
场景
点击按钮,检测到未登录,直接跳转到登录页,登录成功后,返回页面继续执行刚才的点击事件
思路
在跳转时用一个队列存储该事件,登录成功后执行队列里的事件
队列
class Queue {constructor() {this.task = []}clear() {this.task = []}push(item, isReset = true) {if (isReset) {this.task = []}this.task.push(item)}run() {this.task.forEach((item) => {item.callback.apply(null, item.params)})this.task = []}
}//可以使用全局变量,也可以使用单例模式
export default class StaticStore {static taskQueue = new Queue()
}
const handleClick = (params) => {if (!token) {navigate('Login')StaticStore.taskQueue.push({ callback: handleClick, [params] })return}console.log('完成')}
const login = async () => {await axios.get('xxx')Toast.show('登录成功')navigation.goBack();StaticStore.taskQueue.run()
}