【发布时间】:2010-01-19 21:48:23
【问题描述】:
您能否在不锁定浏览器的情况下停止 JavaScript 执行?通常停止执行的方法是无限循环while()-loop,但对于 FireFox,它会锁定浏览器直到循环结束。
您对此有何看法?
我正在尝试覆盖 window.confirm() 以使用 HTML 实现我自己的对话框。我这样做是为了不必更改现有代码(这是一个相当大的代码库)。
我需要能够暂停执行以允许用户输入;反过来像标准确认函数一样返回一个布尔值:
if (confirm("..."))
{
// user pressed "OK"
}
else
{
// user pressed "Cancel"
}
更新
据我所知;这不能使用setTimeout() 或setInterval() 来完成,因为这些函数异步执行给它们的代码。
【问题讨论】:
-
setTimeout和setInterval不要异步执行代码,它们会倒计时,然后将回调函数添加到线程空闲时调用的队列中。然后函数本身同步运行。 -
@Andy E -
window.setTimeout(和window.setInterval)创建异步回调。正常程序流程在调用后立即继续,回调在稍后执行,具体取决于计时器长度。 JavaScript 是单线程的,并且回调一旦开始执行,就会阻止其他代码执行,这并不能阻止它是异步的。
标签: javascript execution