【发布时间】:2013-11-07 22:05:49
【问题描述】:
我对这种行为很熟悉,但没有词汇来描述(因此谷歌)它。
setTimeout(function () { alert("timeout!"); }, 1000);
veryLongProcess(); // lasts longer than 1000 milliseconds
我相信这样做的结果是您在漫长的过程完成后收到警报,即代码执行后超过 1 秒。我想这是超时将函数发送到某个单独的“线程”或“堆栈”或“循环”,这些函数只能在当前线程完成后开始,即使当前线程花费的时间比超时时间长最初指定为。
这个有名字吗?我如何才能详细了解它的工作原理?
【问题讨论】:
-
我相信你要找的词是“延迟”。
-
'我认为这是超时将函数发送到某个单独的“线程”或“堆栈”或“循环”,这些函数只能在当前线程完成后开始,即使当前线程需要比最初指定的超时时间长。' - 作为对正在发生的事情的近似或非技术描述,这是正确的。 JavaScript 是单线程的(如果你忽略 web worker),所以
setTimeout将一个函数排队等待稍后在同一个线程上运行,然后如果其他 JS 正在运行,那么超时就会延迟。 -
@Bryce Hanscomb 的 cmets 帮我找到了这个:stackoverflow.com/questions/2035645/…
标签: javascript timeout settimeout