Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Javascript没有睡眠功能?_Javascript - Fatal编程技术网

为什么Javascript没有睡眠功能?

为什么Javascript没有睡眠功能?,javascript,Javascript,有什么技术或其他原因阻止在Javascript中实现睡眠 更新:我知道延迟代码setTimeout、setInterval等执行的方法。这些方法产生的问题是,开发人员被迫将代码块分成两部分,一部分是在时间间隔之前执行的,另一部分是在时间间隔之后执行的,这可以说是不可取的。确实如此。这叫做设置超时 常见的JavaScript环境browser和node.js是单线程和事件驱动的。他们需要继续维护他们的主事件循环。完全停止线程也会停止后台进程,因为它取决于事件循环触发 这在几乎所有面向用户的环境中都

有什么技术或其他原因阻止在Javascript中实现睡眠


更新:我知道延迟代码setTimeout、setInterval等执行的方法。这些方法产生的问题是,开发人员被迫将代码块分成两部分,一部分是在时间间隔之前执行的,另一部分是在时间间隔之后执行的,这可以说是不可取的。

确实如此。这叫做设置超时

常见的JavaScript环境browser和node.js是单线程和事件驱动的。他们需要继续维护他们的主事件循环。完全停止线程也会停止后台进程,因为它取决于事件循环触发


这在几乎所有面向用户的环境中都很常见;Windows、Mac OS、Java swing、Android等都要求您保持主UI线程运行;你不能只是在上面睡觉。

真正的问题是,为什么你会在浏览器中停止javascript的执行,有什么可能的原因让用户等待睡眠功能?如果睡眠是为了阻止用户与页面的其余部分交互,那将是非常无用的。那么一个基本上与setTimeout有相同用途的实现呢?setTimeoutfunction{alert'现在已经是早上了吗?';},10000;。。。这不是一个基于意见的问题。它有一个技术上的答案。公平地说,停止整个线程会适得其反。setTimeout的问题是,如果您试图实现的只是函数中的一个短暂暂停,那么您几乎需要将其分解为两个独立的代码块。单独执行当前函数一段时间是否安全?一般来说,不是。我的问题是,你为什么要暂停片刻?通常有两个原因:1你在等待其他事情完成,或2你想控制游戏循环或其他事情的计时。在第一种情况下,如果您阻止UI线程,那么您甚至不知道另一件事情是否完成,因为它必须在被阻止的UI线程上运行。在第二种情况下,最好使用显式计时函数。所以不,总的来说不安全。接受你正在尝试做的事情的复杂性。与冻结处理的结果相比,将代码跨度分成两部分的问题是一个非常小的问题。由于js具有闭包功能,您通常可以将第二部分封装在anon中,而不必分解任何内容…@AthyuttamReddy您可能想要做的是延迟完成函数的求值。要实现这一点,您不需要sleep函数,只需将需要延迟的代码放入setTimeout调用中即可。@ChrisTavares-谢谢。我理解Javascript现在是单线程的复杂性。然而,难道不应该有一种方法来实现setTimeout的效果,而不需要在一行中分解代码吗?一种方法是编写自己的同步函数,在一定时间后返回,但仍然使用客户端资源,这是不必要的。这就是我的问题产生的原因,而不是因为不熟悉setTimeout。