(function(){window.location.href= 'www.baidu.com'alert('23')console.log(123)}())为什么先弹出123 再console呢? 在ajax中也是,window.location.href 不跳转?求解这里面是有什么机制吗?
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
window.location.href
不会立即就阻塞所有的代码,这和alert
不一样,它至少会等待一个页面离开事件,那么在同时,代码会往下执行。
alert阻塞当前代码,这个没啥好问的吧,规定就是这样,alert,confirm和prompt都是同步的,所以后面的代码都会被阻塞。
ajax中的location.href不跳转?
问得不清楚,我查了类似的关键字,这是你要的说法,Artical,没啥难理解的,submit的重定向在success回调之前。
如果你说的不是这种情况,建议补充一下问题
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
是异步的
因为 LocationChange 行为在浏览器内核中是起定时器异步执行的,代码可以参见 Chromium 源码 NavigationScheduler::ScheduleFrameNavigation。异步执行的好处是为了防止代码调用过深,导致栈溢出,另外也是为了防止递归进入加载逻辑,导致状态紊乱,保证导航请求是顺序执行的。
知乎上的答案
添加回答
举报
0/150
提交
取消