登录后继续执行方法
场景
点击按钮,检测到未登录,直接跳转到登录页,登录成功后,返回页面继续执行刚才的点击事件
思路
在跳转时用一个队列存储该事件,登录成功后执行队列里的事件
队列
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()
}