目前只发现这两个可以阻塞一会线程,然后还能顺利让前面还未来得及生效的内容执行完。
如果想模拟有没有好方法?
原谅我运用场景不方便说= =。
好像是各家浏览器自己的内部实现。
用 async/await 可以模拟?
那怎么实现“阻塞”这个状态呢?
async await + setTimeout
如果页面在 Timeout 之前就发生了跳转那就不能执行了。
这个阻塞不是简单的 async 你就不要想着完美实现了 能用 es3 语法实现的阻塞想想都神奇
也就是只能用 alert 或者 confirm 了?
js 是单线程的,但浏览器不是啊。阻塞一个标签页应该是在 js 之外的浏览器层面做的
是的呀,比如 360 浏览器就会标记页面之后跳转到安全提示。
XMLHttpRequest 有同步模式。
然而,干嘛要阻塞,应该可以有不用阻塞达到目的的方法。比如,setTimeout, setImmediate, requestAnimationFrame
如果一定要阻塞呢。
XMLHttpRequest 有同步模式。
如果要线程卡住只能是浏览器之外做的事,js 的话只能用 alert confirm 才能做所谓的暂停,
XMLHttpRequest 的同步模式严格来说不算是线程“卡住”
那就辞职试试?
脱离场景空谈实现,有点难
问问看能不能让客户换上 chrome 装上扩展,这个应该只能从外部来了
目前 alert 可以达到效果,想问问其中的原理以及是否可以模拟出更棒的体验效果,毕竟 alert 不能自定义不是。
alert 不是 js 的方法,是浏览器的。
你写的 js 跑在浏览器里,而浏览器本身也有代码来组成浏览器本身这容器。alert 到底还是调用了浏览器注入的方法,具体如何实现,得去找找人家开源的代码了。
要实现这个,你得让用户用你定制的浏览器,常见的是弄个客户端了。
受教了,感谢。
你这个是正确答案。
XHR 可以做成阻塞模式的。
浏览器自己实现的接口,没什么特殊的