目前只发现这两个可以阻塞一会线程,然后还能顺利让前面还未来得及生效的内容执行完。
如果想模拟有没有好方法?
原谅我运用场景不方便说= =。
![]() | 1 yamedie 2019-06-09 15:42:28 +08:00 via Android 好像是各家浏览器自己的内部实现。 用 async/await 可以模拟? |
![]() | 3 rabbbit 2019-06-09 5:54:36 +08:00 async await + setTimeout |
![]() | 5 murmur 2019-06-09 16:05:32 +08:00 这个阻塞不是简单的 async 你就不要想着完美实现了 能用 es3 语法实现的阻塞想想都神奇 |
7 setSweetChild 2019-06-09 16:13:38 +08:00 via Android js 是单线程的,但浏览器不是啊。阻塞一个标签页应该是在 js 之外的浏览器层面做的 |
![]() | 8 cyrbuzz OP @setSweetChild 是的呀,比如 360 浏览器就会标记页面之后跳转到安全提示。 |
![]() | 9 yixiang 2019-06-09 16:20:00 +08:00 XMLHttpRequest 有同步模式。 然而,干嘛要阻塞,应该可以有不用阻塞达到目的的方法。比如,setTimeout, setImmediate, requestAnimationFrame |
![]() | 12 shakaraka PRO |
![]() | 14 yamedie 2019-06-09 16:37:01 +08:00 via Android 脱离场景空谈实现,有点难 |
![]() | 15 orzorzorzorz 2019-06-09 16:42:45 +08:00 问问看能不能让客户换上 chrome 装上扩展,这个应该只能从外部来了 |
![]() | 16 cyrbuzz OP |
![]() | 17 orzorzorzorz 2019-06-09 16:55:53 +08:00 ![]() alert 不是 js 的方法,是浏览器的。 你写的 js 跑在浏览器里,而浏览器本身也有代码来组成浏览器本身这容器。alert 到底还是调用了浏览器注入的方法,具体如何实现,得去找找人家开源的代码了。 要实现这个,你得让用户用你定制的浏览器,常见的是弄个客户端了。 |
![]() | nbsp; 18 cyrbuzz OP @orzorzorzorz 受教了,感谢。 |
![]() | 19 liuzhiyong 2019-06-09 22:01:58 +08:00 @yixiang 你这个是正确答案。 |
![]() | 20 liuzhiyong 2019-06-09 22:03:41 +08:00 @cyrbuzz XHR 可以做成阻塞模式的。 |
![]() | 21 zhw2590582 2019-06-10 09:22:34 +08:00 via iPhone 浏览器自己实现的接口,没什么特殊的 |