Javascript cancelAnimationFrame如何处理回调中的副作用?

Javascript cancelAnimationFrame如何处理回调中的副作用?,javascript,webgl,Javascript,Webgl,requestAnimationFrame接受在显示帧之前运行的回调函数。假设此回调函数具有以下副作用: function callback { ++GLOBAL_VAR_A; ++GLOBAL_VAR_B; } 如果我在请求回调时调用cancelAnimationFrame,那么回调会是原子的吗?换句话说,回调是保证完全执行还是根本不执行?或者,取消是否可以说“全局变量A递增”,而不是“全局变量B 此外,如果此回调是原子回调,如果我成功取消帧,回调是否会执行?Javascript是单

requestAnimationFrame接受在显示帧之前运行的回调函数。假设此回调函数具有以下副作用:

function callback {
  ++GLOBAL_VAR_A;
  ++GLOBAL_VAR_B;
}
如果我在请求回调时调用cancelAnimationFrame,那么回调会是原子的吗?换句话说,回调是保证完全执行还是根本不执行?或者,取消是否可以说“全局变量A递增”,而不是“全局变量B


此外,如果此回调是原子回调,如果我成功取消帧,回调是否会执行?

Javascript是单线程的,因此此问题无法显示:调用cancelAF时是否调用了回调。如果它被调用,则什么也不做。如果它没有被调用,以后就不会被调用。您的问题表明cancelAF也会取消正在进行的回调,但规范对此只字未提:MDN描述为:

window.cancelAnimationFrame

取消先前通过计划的动画帧请求 调用window.requestAnimationFrame()

()

这是一个被取消的“请求”,而不是回调

也许更清楚一点:如果在++GLOBAL\u VAR\u a之后和++GLOBAL\u VAR\u B;之前调用cancelAF;,这意味着调用了allready回调,而cancelAF什么也不做


cancelAF没有返回值,因此您无法告诉您“成功取消(led)帧”

哦,谢谢!因此,回调肯定会被调用,因为它必须在cancelAF之前或之后调用,javascript是单线程的;请求被取消了,但回调没有取消,对吗?谢谢