requestAnimationFrame采用在显示帧之前运行的回调函数。假设这个回调函数有副作用,如:
function callback {
++GLOBAL_VAR_A;
++GLOBAL_VAR_B;
}
如果我对该回调的请求调用cancelAnimationFrame,那么回调是否是原子的?换句话说,回调是保证完全执行还是根本不执行?或者取消假可以GLOBAL_VAR_A
增加,但不是GLOBAL_VAR_B
?
此外,如果此回调是原子的,如果我成功取消了帧,那么回调是否会执行?
答案 0 :(得分:1)
Javascript是单线程的,所以这个问题无法显示:调用cancelAF时是否调用了回调函数。如果它被调用,则什么也没做。如果没有调用它,它将不会被调用。你的问题表明cancelAF也会取消正在进行的回调,但规范并没有说明这一点:MDN描述是:
window.cancelAnimationFrame
取消先前通过a安排的动画帧请求 调用window.requestAnimationFrame()。
(https://developer.mozilla.org/en-US/docs/Web/API/window.cancelAnimationFrame)。
这是一个被取消的“请求”,而不是回调。
也许更清楚一点:如果你在++ GLOBAL_VAR_A之后和++ GLOBAL_VAR_B之前调用cancelAF,那么这意味着回调已经全部调用,而cancelAF什么也没做。
cancelAF没有返回值,所以你不能告诉你“取消(领导)框架成功”