业务场景:配置手机端能在哪些浏览器显示,比如在钉钉,在微信公众号。
实现过程:先随缘试了下宏队列(我想错了),不行。再试了下async和
await,还不行,发现beforeEach里面能写方法(一直没这样写过)。最后是以下,成功了~~O(∩_∩)O哈哈~
router.beforeEach((to, from, next) => {
let ua = navigator.userAgent.toLowerCase(); //判断浏览器的类型
let get = () => {//后续逻辑
//浏览器限制
let agent_type = JSON.parse(sessionStorage.getItem("agent_type"))
let browser_type = 0
if (ua.match(/Alipay/i) == "alipay") {
browser_type = 3
} else if (ua.match(/MicroMessenger/i) == 'micromessenger' && ua.match(/wxwork/i) == 'wxwork') {
browser_type = 5
} else if (ua.match(/MicroMessenger/i) == 'micromessenger') {
browser_type = 1
} else if (ua.match(/DingTalk/i) == "dingtalk") {
browser_type = 4
}
if (agent_type.indexOf(browser_type) == -1 && to.path != "/error") {
next("/error")
} else if (to.path == "/error") {
next()
}
//浏览器限制
//以下正常逻辑
}
if (!sessionStorage.getItem("agent_type")) { //判断sessionStorage没有agent_type,调用接口存入
Axios.get(`${apiUrl}wap/vcard/tenant-config`).then((res) => {
if (res.data.code == 200) {
let agent_type = res.data.data.agent_type
sessionStorage.setItem("agent_type", JSON.stringify(agent_type)) //存储能进入的浏览器标识
}
get()
}).catch((e) => {
get()
});
} else {
get()
}
})