我的意思是一次性调用多个具有相同功能的requestAnimationFrame
function Draw() { /* DoSomething */ }
function AFunc() {
/* prepare something */
requestAnimationFrame(Draw);
}
function BFunc() {
/* prepare something */
requestAnimationFrame(Draw);
}
window.onload(function(){
AFunc();
BFunc();
});
会发生什么?会复制吗?它会在同一帧中被调用 2 次吗?或者它会被堆叠并在不同的框架上调用?
最佳答案
The callback method is passed a single argument, a DOMHighResTimeStamp, which indicates the current time when callbacks queued by requestAnimationFrame begin to fire. Multiple callbacks in a single frame, therefore, each receive the same timestamp even though time has passed during the computation of every previous callback's workload. This timestamp is a decimal number, in milliseconds, but with a minimal precision of 1ms (1000 µs).
(强调我的)
此外,from the spec :
When the requestAnimationFrame() method is called, the user agent must run the following steps:
...
- Append the method's argument to document's list of animation frame callbacks
和
When the user agent is to run the animation frame callbacks for a Document doc with a timestamp now, it must run the following steps:
...
- For each entry in callbacks, in order: invoke the callback
所以对于你的问题:
What will happen? Will it duplicated? Would it be called 2 times in the same frame? Or it would be stacked and called on difference frame?
上面的所有内容表明,连续的调用将被添加到回调列表中,当浏览器将要运行它们时,这些调用将按照添加的顺序一个接一个地执行,本质上是重复调用Draw
在您的代码中。
关于javascript - 当我多次调用 requestAnimationFrame 时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673711/
我正在尝试为一个对象编写OOjavascript,该对象具有昂贵的初始化过程,完成后会回调一个函数。问题在于调用者需要在回调例程中使用同一对象的函数,而该对象尚不存在://ctorforfooobjectfunctionfoo(callback){//doslowinitializationhere..//callbackwhendonecallback();};foo.prototype=function(){return{//doStuffmethoddoStuff:function(){alert('stuffdone');}};}();//instantiatethefooob
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIoutputanISO-8601formattedstringinJavascript?如果我有一个以毫秒为单位表示日期的整数,将其转换为iso格式的语法是什么?
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我通常会看到版本1,但我从事的一些开源项目使用版本2,而我过去也使用过版本3。有没有人有更优雅的解决方案,也许是更具可扩展性的解决方案?版本1:vartext1='thisismyscript\'scontent';版本2:Thisismycontentvartext1=$('#text1').html();版本3:vartext1=$('#text1'
有一些算法可以“非常好”地解决问题,前提是“非常好”意味着最小化浮点算术运算的数量以支持整数算术。以Bresenham'slinealgorithm为例为了弄清楚要填充哪些像素以便在Canvas上画一条线:这个人几乎只用了一些简单的整数运算就使整个过程变得可行。这种事情在很多情况下显然是好的。但是,在javascript中需要大量float学运算的操作值得担心吗?我知道就语言规范而言,一切都几乎是十进制数。我想知道是否实际上尝试让事情尽可能接近整数是否值得——浏览器是否进行了优化以使其值得? 最佳答案 您可以在javascript中
有没有办法使用YoutubeAPI播放视频直到视频中的某个点然后暂停? 最佳答案 我修改了YouTubePlayerAPIReferenceforiframeEmbeds中的代码在一定秒数后暂停播放。Demo代码通过等待onPlayerStateChange事件来工作。当事件触发时,它会检查事件以查看它是否是PLAYING事件。如果是,它会计算从当前时间(getCurrentTime()方法)到所需暂停点(硬编码为stopPlayAt变量)的剩余时间。它设置一个Javascript计时器来等待该差异,然后向API传递一个命令以暂停视
我有一个客户想要为用户提供从列表中最多选择5个附加选项的选项。我喜欢Chosen.js的概念,但如何限制选择?我想一种解决方案是使用onChange来计算所选的数字,然后禁用剩余的数字,但是有没有更简洁的解决方案? 最佳答案 Chosen提供了一个max_selected_options来允许你这样做:$(".chzn-select").chosen({max_selected_options:5}); 关于javascript-Chosen.js-是否可以限制所选项目的数量?,我们在S
我知道IE8很麻烦,但我从未见过它给我带来如此麻烦。我想要做的就是定义一个Javascript对象,它会导致错误,停止在页面上运行所有脚本。错误是“预期的标识符、字符串或数字”,表明问题发生在我在下面定义属性“类”的地方。我见过无数的脚本都是这样定义对象的,那么为什么IE8会吐槽这个呢?我将违规代码隔离到此。将它单独放在HTML页面的头部并在IE8中运行它会导致我看到的问题。varatts={class:"trigger"}; 最佳答案 通过用引号引起来定义使用适当的数据类型,"class"
考虑以下代码-varMyObjectModel=function(myObject){varself=this;self.myNumber1=ko.observable(myObject.number1).trimmed();self.myNumber2=ko.observable(myObject.number2).trimmed();我想扩展myNumber1和myNumber2,以添加knockoutvalidation,以便在两者均为空时抛出错误,并在其中一个有值时保持正常。知道如何实现这一目标吗? 最佳答案 您可以使用ko
我正在尝试在Java程序中使用Javascript编写脚本。我还没有找到在Javascript中遍历Java集合的方法。如果我为集合调用iterator()方法,我得到的是方法名称而不是元素。这是一个示例代码:functiongetValue(row,components){varapartment=components.get(0);varrooms=apartment.getRooms();for(varroominrooms.iterator()){println(room);}returnrooms.toString();}apartment.getRooms()返回房间集合。
esxi全称“VMwareESXi”,是可直接安装在物理服务器上的强大的裸机管理系统,是一款虚拟软件;ESXi本身可以看做一个操作系统,采用Linux内核,安装方式为裸金属方式,可直接安装在物理服务器上,不需安装其他操作系统,它是专为运行虚拟机、最大限度降低配置要求和简化部署而设计;通过直接访问并控制底层资源,ESXi能有效地对硬件进行分区,以便整合应用并降低成本。本教程操作环境:windows10系统、VmwareESXi6.7、DellG3电脑。esxi全称“VMwareESXi”,是可直接安装在物理服务器上的强大的裸机管理系统,是一款虚拟软件,不需安装其他操作系统,是VMware服务器虚