显示然后隐藏动画指示器/微调器 gif 是向用户展示他们的操作有效并且在他们等待操作完成时正在发生某些事情的好方法 - 例如,如果操作需要从服务器通过 AJAX。
我的问题是,如果减速的原因是处理器密集型函数,gif 会卡住。
在大多数浏览器中,GIF 在执行耗费大量处理器的函数时停止动画。对于用户来说,这看起来像是崩溃或出现故障,但实际上它在工作。
注意:“这很慢”按钮会占用处理器一段时间 - 对我来说大约 10 秒,具体取决于 PC 规范。您可以使用 HTML 中的“data-reps”属性更改它的执行量。
如果 JS 使处理器保持忙碌,是否有任何方法可以指示正在运行的进程不会卡住?如果没有办法让某些东西具有动画效果,那么我会求助于显示隐藏静态短信 Loading...或类似的东西,但动画看起来更活跃。
如果有人想知道为什么我要使用处理器密集型代码,而不是仅仅通过优化来避免这个问题:很多必然是复杂的渲染。代码非常高效,但它的作用很复杂,因此对处理器的要求总是很高。它只需要几秒钟,但足以让用户感到沮丧,并且there's plenty of research going back a long time to show that indicators are good for UX .
第二个与处理器繁重功能的 gif 微调器相关的问题是,微调器实际上不会显示,直到一个同步集中的所有代码都运行 - 这意味着它通常不会显示微调器,直到它隐藏的时候微调器。
setTimeout( function(){ ... },50); 中的指示器后包装所有内容间隔很短,使其异步。这可行(见上面的第一个示例),但它不是很干净 - 我相信有更好的方法。我确信一定有一些我不知道的处理器密集型加载指标的标准方法 - 或者可能只是使用 Loading... 是正常的带有 setTimeout 的文本?我的搜索没有任何结果。我读过 6 或 7 个关于类似问题的问题,但结果发现它们都无关。
编辑评论中的一些很好的建议,这里是我的确切问题的更多细节:
Loading...发短信给其他人一些现代的东西。最佳答案
如果动画是使用转换而不是通过更改属性实现的,现代浏览器现在可以独立于 UI 线程运行 CSS 动画。关于这方面的文章可以在 http://www.phpied.com/css-animations-off-the-ui-thread/ 找到。 .
例如,位于 http://projects.lukehaas.me/css-loaders/ 的一些 CSS 旋转器是通过转换实现的,并且在 UI 线程繁忙时不会卡住(例如,该页面上的最后一个微调器)。
关于javascript - 指示处理器密集型 JS 函数正在运行(GIF 微调器没有动画),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20128360/
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
我需要一个通过输入字符串进行计算的方法,像这样function="(a/b)*100"a=25b=50function.something>>50有什么方法吗? 最佳答案 您可以使用instance_eval:function="(a/b)*100"a=25.0b=50instance_evalfunction#=>50.0请注意,使用eval本质上是不安全的,尤其是当您使用外部输入时,因为它可能包含注入(inject)的恶意代码。另请注意,a设置为25.0而不是25,因为如果它是整数a/b将导致0(整数)。
我有这个代码File.open(file_name,'r'){|file|file.read}但是Rubocop发出警告:Offenses:Style/SymbolProc:Pass&:readasargumenttoopeninsteadofablock.你是怎么做到的? 最佳答案 我刚刚创建了一个名为“t.txt”的文件,其中包含“Hello,World\n”。我们可以按如下方式阅读。File.open('t.txt','r',&:read)#=>"Hello,World\n"顺便说一下,由于第二个参数的默认值是'r',所以这样
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生