start.onclick=function newGame(){
location.reload();
flag = selectModel[0];
console.log(flag);
};
我这里本来要实现点击后,刷新页面及全局变量flag赋值。成功刷新,但未能成功赋值;如果把location.reload注释掉,就可以赋值。
location.reload()是异步吗,赋值的时候,刷新还没执行,而在赋值完成后进行了刷新操作,是这样吗?
start.onclick=function newGame(){
location.reload();
flag = selectModel[0];
console.log(flag);
};
我这里本来要实现点击后,刷新页面及全局变量flag赋值。成功刷新,但未能成功赋值;如果把location.reload注释掉,就可以赋值。
location.reload()是异步吗,赋值的时候,刷新还没执行,而在赋值完成后进行了刷新操作,是这样吗?
应该是同步才对,所以好一点的方式可以考虑这样:
start.onclick=function newGame(){
flag = selectModel[0];
console.log(flag);
setTimeout(() => {
location.reload();
});
};
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
6 回答1.1k 阅读
你先了解一下 javascript 在浏览器中的生命周期。
重载页面后,进入下一个生命周期,上一个周期里赋值的flag,即使赋值成功,也被销毁掉了。
页面刷新,相当于丢掉一切重来,和重新打开页面无二。
什么奇葩需求会要求点击链接刷新后还要修改全局下的flag?