开发者问题收集

在 JavaScript 中阻止调用

2011-10-18
467

在 javascript 中编写阻塞调用是个好主意吗? 意思是一个执行某项操作 x 秒并返回的函数?

我想通过添加这些内联阻塞函数来添加人为延迟。

这样做的缺点是 CPU 非常忙 执行一些随机操作 x 秒。

另一个缺点是浏览器中的多个 选项卡可能会挂起

有没有更好的方法来做到这一点???

2个回答

不,这样做不是一个好主意(您已经提到了一些原因)。请改用 setTimeout

Greg Hewgill
2011-10-18

如果我从您对其他回答者的评论中正确理解了您的问题,您希望模拟一个“线程”,该线程执行某些操作,然后阻塞一段时间,然后恢复。在此“线程”被“阻塞”期间,(1) 其他选项卡处于活动状态,并且 (2) CPU 未处于忙等待状态。

如果是这种情况,您可以使用 setTimeout (正如 Greg Hewgill 指出的那样)。诀窍是按如下方式思考。将您的“线程”分成两部分:

DO_FIRST_PART
setTimeout(function () {DO_SECOND_PART}, 5000);

现在您已经模拟了一个中间有 5 秒延迟的线程。

当然,此选项卡或进程上的其他事件仍将被接受。但正如 Greg 指出的那样,它们应该被接受。

Ray Toal
2011-10-18