JavaScript如何以最简便的方式实现类似delay(timing)的阻塞延迟效果? 举报 理由 举报 取消 尝试用setTimeout(),发现仅仅是延后执行setTimeout()内部的代码,并且会在到时间之前立刻执行setTimeout()之后的代码。有没有办法进程阻塞,或者直接有一个类似delay()的解决办法? 2018年1月31日 4 条回复 1476 次浏览 JavaScript,Processing,入门,开发,编程语言,脚本语言
回复 ( 4 )
js 当然可以阻塞了,死循环,synchronous ajax,alert/prompt/confirm,都可以把主线程阻塞住,但你界面也卡住了。
还有 Web worker 里的 importScripts(),Node 里面的各种 synchronous API 也都是可以把各自的线程阻塞住的。
但线程阻塞住了,在这个线程上就不能干点别的了,阻塞主线程尤其是大忌。
如果你想要的只是暂停一段代码执行,那还是有可能在不阻塞线程的情况下实现的,方法就是利用 generator yield 的可暂停和恢复的特性。
你要的是下面这个吗?
你可以让你的代码去适应setTimeout啊
首先,js进程不推荐阻塞的写法。
然后,大概只有alert能做到阻塞进程了。