IOS H5页面跳转有延迟
1. 需求背景
在访问h5页面前,需要进行静默授权登录,因此需要跳转一个页面后授权完毕,重定向回当前页面。
2. 问题原因
由于在执行调用异步接口之前,需要授权后才能正常调用,否则会提示报错。但将跳转逻辑放在接口前面,按原来执行顺序应该先执行跳转,再执行异步函数。而IOS将跳转页面这部操作延时,导致后续的逻辑执行了。
3. 解决方案
使用promise去确认是否进入跳转逻辑,如果不需要则resolve(1), 后续的逻辑根据该返回值判断是否需要执行。
function toLink(){
return new Promise((resolve,reject)=>{
var loginFlag = **;
// 区分已登录和未登录
if(loginFlag != '1'){
window.location.href = '/.../...';
resolve('0');
}
resolve(loginFlag);
});
}
toLink().then(function(data){
if(data != '1'){
return;
}
fetch();
});