javascript中的阻塞调用

javascript中的阻塞调用,javascript,browser,Javascript,Browser,用javascript编写阻塞调用是个好主意吗? 这意味着一个函数在x秒内执行某项操作并返回 我想通过添加这些内联阻塞函数来添加人工延迟 这样做的缺点是CPU非常忙在x秒内执行一些随机任务 另一个缺点是浏览器中的多个选项卡可能挂起 有更好的方法吗?不,这样做不是一个好主意(您已经提到了一些原因)。改用。不,这样做不是一个好主意(您已经提到了一些原因)。改为使用。如果我从你对其他回答者的评论中正确理解了你的问题,那么你需要模拟一个“线程”来做一些事情,然后阻塞一段时间,然后继续。在此“线程”被“阻

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

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

这样做的缺点是CPU非常忙在x秒内执行一些随机任务

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


有更好的方法吗?

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

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

如果我从你对其他回答者的评论中正确理解了你的问题,那么你需要模拟一个“线程”来做一些事情,然后阻塞一段时间,然后继续。在此“线程”被“阻塞”期间,(1)其他选项卡处于活动状态,(2)CPU没有忙着等待

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

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

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


当然,此选项卡或流程上的其他事件仍将被接受。但正如格雷格指出的那样,他们应该这样做

如果我从你对其他回答者的评论中正确理解了你的问题,那么你需要模拟一个“线程”来做一些事情,然后阻塞一段时间,然后继续。在此“线程”被“阻塞”期间,(1)其他选项卡处于活动状态,(2)CPU没有忙着等待

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

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

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


当然,此选项卡或流程上的其他事件仍将被接受。但正如格雷格指出的那样,他们应该这样做

setTimeout在我的用例中不起作用,因为它不会阻止代码执行。恐怕您需要重新评估您的用例。阻止浏览器不是一个好主意。我的用例很简单:我试图通过放置这些内联阻止调用来人工推送onLoad事件。你能详细说明“推送onLoad事件”的含义吗?推送onLoad事件:例如,假设一个正常的onLoad在2秒左右触发,我希望它在5秒时触发,延迟3秒(人工诱导的)setTimeout在我的用例中不起作用,因为它不会阻止代码执行。恐怕你需要重新评估你的用例。阻止浏览器不是一个好主意。我的用例很简单:我试图通过放置这些内联阻止调用来人工推送onLoad事件。你能详细说明这意味着什么吗“推送加载事件”?推送加载事件:例如,假设正常加载在2秒左右触发,我希望它在5秒时触发,延迟3秒(人为诱导)不确定要延迟多少秒,但如果延迟太长,大多数现代浏览器会向用户显示一条消息,告诉他们有一个运行缓慢的脚本,并询问他们是否要取消它。我假设你不想这样。不确定要延迟多少秒,但如果延迟太长,大多数现代浏览器会显示消息向用户发送电子邮件,告诉他们有一个运行缓慢的脚本,并询问他们是否要取消它。我想你不希望这样。