我可以使用d3转换来错开任意函数的执行,如果可以,如何使用?
Can I use a d3 transition to stagger execution of an arbitrary function, and if so, how?
我有一个比较复杂的update()函数,它对一个名为tool_animations的大数组的每个元素执行。
与其在这个函数中进行转换,不如将函数本身错开执行:
playback_transition = d3.transition()
.delay(function(){ return (elem_dur_in_ms * curr_index); })
.duration(0);
d3.selectAll(tool_animations)
.each(function() {
this.update();
});
虽然滥用了转换,但我最初认为我可能会得到下面这样的工作。(现在很清楚,这只是将转换的参数传递给update()调用)。
d3.selectAll(tool_animations)
.each(function() {
var curr_arr_elem = this;
playback_transition.call(curr_arr_elem.update);
});
知道我如何错开更新调用本身吗?感谢任何建议,最好是基于3d,没有jQuery。谢谢:-)
D3允许您向转换添加事件侦听器。也就是说,您可以在转换开始或结束时调用函数。在您的情况下,可以使用"end"侦听器错开调用。只需像以前一样初始化带有延迟的转换,并添加以下代码:
.each("end", functionToCall);
可以使用setTimeout:
d3.selectAll(tool_animations)
.each( function(d,i) {
var curr_arr_elem = this;
setTimeout( function () {
playback_transition.call(curr_arr_elem.update);
}, i * 100 );
});
相关文章:
- 如果在'/'执行此函数的途径是可以异步执行此代码
- 为什么通过javascript执行php可以工作
- 这是关于Jquery/JS的,如果我改变元素's HTML-我可以对它执行其他Jquery/JS操作吗
- 如果可以进行语句重构,则是简写
- 如果可以使用复选框更改多行值
- 实现滚动条,但光标根本没有移动?另外,如果可以的话,请告诉我如何在此嵌入鼠标滚动
- 是否可以用Ext.js实现可移动工具栏,如果可以,如何用我的代码实现
- 什么'如果可以的话,命名函数表达式的意义是什么;不要真的用你给他们起的名字来称呼他们
- 是否可以将JS变量连接到PHP邮件方法中,如果可以,如何连接
- 捕获提交事件,验证,如果可以,则继续提交表单
- 是否可以(如果可以,如何)使用jQuery's带有$.Views的appendTo
- Date()在网站脚本中不考虑夏令时,但在Firefox控制台中执行时可以
- 如何使这个JS代码只执行如果语句是真的?设置cookie
- 默认加载PNG,如果可以的话升级到SVG
- JavaScript可以“单元可测试”吗?如果包装在自动执行的匿名函数中
- 您可以,如果可以,如何将默认光标作为Image
- 如果可以使开发更容易,忽略命名约定是否可以接受?
- 我可以使用d3转换来错开任意函数的执行,如果可以,如何使用?
- 是否可以计算这个bookmarklet被点击了多少次,如果可以,如何得到一个文件的点击次数
- ExtJS的危险信号:我可以绕过它,如果可以,如何