cancelAnimationFrame如何处理回调中的副作用
How does cancelAnimationFrame deal with side-effects in the callback?
requestAnimationFrame接受一个回调函数,该函数在帧显示之前运行。假设这个回调函数有如下副作用:
function callback {
++GLOBAL_VAR_A;
++GLOBAL_VAR_B;
}
如果我调用cancelAnimationFrame请求回调,回调会是原子的吗?换句话说,回调是保证完全执行还是根本不执行?或者取消休假说GLOBAL_VAR_A
递增,而不是GLOBAL_VAR_B
?
此外,如果这个回调是原子的,如果我成功取消帧,回调是否执行?
Javascript是单线程的,所以这个问题无法显示:当cancelAF被调用时,要么回调被调用,要么不被调用。如果调用了它,则什么也不做。如果它没有被调用,以后就不会被调用。你的问题表明cancelAF也会取消正在进行的回调,但规范对此只字未提:MDN描述为:
window.cancelAnimationFrame
取消先前通过调用window.requestAnimationFrame().
(https://developer.mozilla.org/en-US/docs/Web/API/window.cancelAnimationFrame).
这是一个被取消的"请求",而不是回调。
可能更清楚一点:如果你在++GLOBAL_VAR_A之后和++GLOBAL_VAR_B之前调用cancelAF,那么这意味着回调已经被调用,cancelAF什么也不做。
cancelAF没有返回值,所以你不能告诉你"cancel(led) the frame成功了"
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 成功回调永远不会被JSONP请求调用
- 如何让程序员在javascript中实现正确的回调
- cancelAnimationFrame如何处理回调中的副作用