requestAnimationFrame接受一个回调函数,该函数在显示帧之前运行。假设这个回调函数有如下副作用:
function callback {
++GLOBAL_VAR_A;
++GLOBAL_VAR_B;
}如果我在该回调的请求上调用cancelAnimationFrame,回调会是原子的吗?换句话说,是否保证回调要么完全执行,要么根本不执行?或者,取消是否可以让GLOBAL_VAR_A递增,而不是GLOBAL_VAR_B
此外,如果这个回调是原子的,如果我成功地取消了框架,回调是否会执行?
发布于 2013-06-14 03:24:19
Javascript是单线程的,所以这个问题不会显示出来:当cancelAF被调用时,回调是否被调用。如果调用了它,则不会执行任何操作。如果它没有被调用,它就不会在以后被调用。你的问题暗示cancelAF也会取消正在进行的回调,但规范并没有对此只字不提: MDN description是:
window.cancelAnimationFrame
取消先前通过调用window.requestAnimationFrame()安排的动画帧请求。
( https://developer.mozilla.org/en-US/docs/Web/API/window.cancelAnimationFrame )。
这是一个被取消的“请求”,而不是回调。
也许说得更清楚一些:如果你在++GLOBAL_VAR_A之后++GLOBAL_VAR_B;之前调用cancelAF,那么这意味着回调已经被调用了,而cancelAF什么也不做。
cancelAF没有返回值,所以你不能告诉你“取消(领导)帧成功”
https://stackoverflow.com/questions/17094904
复制相似问题