为什么有很多requestAnimationFrame的示例在回调之外调用requestAnimationFrame?

时间:2019-04-29 19:05:03

标签: javascript requestanimationframe

我在网上看到的许多示例RequestAnimationFrame两次调用该函数:在回调的内部和外部。我了解为什么我们在内部调用它;但是,为什么我们在外面叫它呢?

Reference

let myReq;

function step(timestamp) {
  myReq = requestAnimationFrame(step); // I understand why we call it here.
  console.log(timestamp, myReq)
  if(timestamp >= 1000) {
    cancelAnimationFrame(myReq);
  }
}

myReq = requestAnimationFrame(step);  // why invoke rAF here.

1 个答案:

答案 0 :(得分:2)

这是在下一个动画帧中对int的初始调用;它实质上是动画的开始。没有它,您将拥有:

int id = 0;
try {
id = Integer.parseInt(tfID.getText());
} catch (NumberFormatException e1 ) {
    if (tfID.getText()==null) //This does not work
        idError.setText("Enter an Integer");
    else
        idError.setText("Intgers only accepted");
}               

...在这种情况下,我们永远不会有step的调用者,并且也不会调用它。

或者,您可以将let myReq; function step(timestamp) { myReq = requestAnimationFrame(step); console.log(timestamp, myReq) if(timestamp >= 1000) { cancelAnimationFrame(myReq); } } 包装器省略为step的初始调用:

requestAnimationFrame

但是在第一次调用step时,它不一定会等待第一个可用的动画帧。