首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何延迟图形重绘?

如何延迟图形重绘?
EN

Stack Overflow用户
提问于 2015-05-14 10:00:01
回答 1查看 249关注 0票数 0

我有一个“图”,它是一个输入字段,用于过滤其他图形(筛选器只考虑包含输入到字段中的文本的数据)。

它很好,但是当你想过滤一个单词(例如“测试”,它会过滤t,然后te,然后tes,然后测试)和重新绘制图表4次,它感觉有点迟钝,特别是在智能手机上。

有没有办法推迟几毫秒来绘制图表,以确保没有打印额外的字母?

理想情况下,我希望过滤每一个字母,绘制快速图表(如显示dataCount),并在绘制其他字母之前稍等片刻(例如。气泡图或线图,似乎是更多的cpu限制)。

有什么简单的方法吗?

相关问题:将输入字段“筛选图”作为一种新的图形类型添加到dc中是否有意义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-17 01:27:44

对于问题的第一部分,您正在寻找的功能称为“节流”。有一个在下划线上执行和房客,以及其他地方。

(不要使用dc.events.trigger因为这是一次决斗。)

至于只绘制一些图表,您可以让您的“筛选图”设置交叉过滤器维度过滤器,然后重新绘制一些图表,然后等待节流事件重新绘制其余的图表,因为redrawAll实际上只是对所有图表进行迭代。

但是,没有任何内置的方法来管理这类子组,所以您必须保留自己的图表列表。

例如,类似于(这里可能讨论d3和jquery语法,但您有了这样的想法):

代码语言:javascript
复制
function fast_redraws() {
    [chart1,chart2,chart3].forEach(function(c) { c.redraw(); });
}
function slow_redraws() {
    [chart4,chart5,chart6].forEach(function(c) { c.redraw(); });
}
var throttle_slow_redraws = _.throttle(slow_redraws, 100, {leading: false});
input.on('change', function() {
    dimension.filter(input.val());
    fast_redraws();
    throttle_slow_redraws(); // throttling makes this okay
})

是的,在dc.js中有这样一个简单的输入小部件是很好的--不过,我不知道如何处理快速/缓慢的重绘。它可以包含一些智慧,进入答案就像对这个问题的回应

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30234405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档