我设置了一个 setTimeout,例如 10 秒,在这 10 秒内,我暂停/休眠 PC。醒来时,以下哪项是正确的:-
关于循环 setInterval 的相同问题。是否保证(不)继续。
最佳答案
简答题
它被定义为在规范中执行。超时请求将进入各种队列并进行轮询,直到它被触发。如果系统在恢复时休眠,它将从停止的地方开始并恢复轮询。
长答案 可能比任何人想知道的都多
最近的(2014年10月28日)working-draft of the Timer's Spec在 w3 编写的答案时,它会触发......只要操作系统在进入休眠/暂停和唤醒/恢复(范围外部)的过程中没有困惑。这更像是一个操作系统级别的问题,但就 w3 规范而言,它最终会被触发。
setInterval(...) 和 setTimeout(...) 都使用相同的 windowTimer 接口(interface), >window 浏览器实现的对象。
在这两种情况下,客户端定义了一个间隔或超时请求,方法上下文对其进行计时器初始化步骤,并添加到事件计时器列表 并为计划的任务返回一个句柄。
一旦在事件计时器列表中,系统会将任务排队以在请求的持续时间或之后执行(等待其他具有更高优先级的任务)作为 CPU 负载)。如果一个任务不能预留 CPU 时间,它将轮询/等待直到它可以。因此,如果系统在恢复时休眠,它将从中断的地方继续。
为了执行任务,它的句柄 必须存在于事件计时器列表 中。任务运行后,如果 repeat 标志设置为 true(如果它是使用 setInterval(...) 创建的),任务 将使用相同的参数重新创建并且分配了完全相同的句柄。换句话说,它会被添加回队列/列表中,以便在下一个时间间隔或之后执行。
以下是 Timer 规范中关于系统从事件计时器列表中删除项目的唯一说明或评论:
Once the task has been processed, if the repeat flag is false, it is safe to remove the entry for handle from the list of active timers (there is no way for the entry's existence to be detected past this point, so it does not technically matter one way or the other)
根据规范,当任务运行时,如果它在 事件计时器列表 中,它将按预期触发。否则它被中止。所以回到我的第一点,如果操作系统在恢复任务时在 sleep /挂起过程中没有搞砸,则继续轮询。一旦它获得 CPU 时间,它的句柄应该仍然存在于事件计时器列表中,因此在被处理后将执行。
关于javascript - 是否定义了跨操作系统 sleep /暂停的 setTimeout 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457759/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin