场景是非 SPA 页面, example.com/B
是由 example.com/A
跳转的, 现在需要在 B
页面返回后刷新 A
:
function backAndReload() {
history.back()
location.reload()
}
明显在 back()
之后页面被杀死, 后面的代码不会被执行, 所以使用 setTimeout
试下:
function backAndReload() {
setTimeout(() => {
location.reload()
}, 1000)
history.back()
}
但页面被杀死后, 注册的 timer
也会被杀死, 所以也不会被执行 reload
.
那么问题来了, 应该使用什么方法可以在页面结束后可以执行一段代码?
如果不是在 SPA 里 的确没有合适的方法, 尝试过使用
web workers
包括SharedWorker
, 当页面杀死 js 进程就会结束, 没有逃脱的可能, 更何况SharedWorker
在webkit
下不被支持, 也没有相应的ployfill
.