在javascript中编写阻塞调用是一个好主意吗? 这意味着一个函数可以执行x秒并返回?
我想通过添加这些内联阻止功能来添加人工延迟。
这样做的缺点是 CPU非常忙执行一些随机的东西x秒。
另一个缺点是浏览器中的多个标签可能会挂起。
有更好的方法吗???
答案 0 :(得分:3)
不,这样做不是一个好主意(你已经提到了一些原因)。请改用setTimeout
。
答案 1 :(得分:2)
如果我从你对其他回答者的评论中正确理解你的问题,你想要模拟一个做某事的“线程”,然后阻塞一段时间,然后重新开始。在此“线程”被“阻止”期间,(1)其他选项卡处于活动状态,(2)CPU没有忙于等待。
如果是这种情况,你可以使用setTimeout
(正如Greg Hewgill指出的那样)。诀窍是考虑如下。将你的“线程”分成两部分:
DO_FIRST_PART
setTimeout(function () {DO_SECOND_PART}, 5000);
现在你已经在中间模拟了一个延迟5秒的线程。
当然,此选项卡或流程上的其他事件仍将被接受。但正如格雷格指出的,他们应该是。