我有一个代表图表线的模型的lineCollection。每一行都通过dataCollection进行计算,并生成一次平均值。对于一条线,它非常活泼。
在获取dataCollection之后,我有一个监听器来处理每一行的数据。
lineCollection.invoke('setData')
然而,这种冻结浏览器。我的下一个方法是尝试设置超时以希望停止阻止ui:
lineCollection.each(function(model) {
setTimeout(model.setData, Math.round(Math.random() * 20));
});
这仍然有点冻结了整个过程。如何告诉浏览器在后台处理数据?
修改的
“处理数据”在我的情况下是压缩变量集~3600长度数组,平均每个切片,并格式化~3600个日期对象。
// x axis
var xs = _.map(times, this.formatTime);
// y axis
var values = _.map(allSamples, function(samples) {
return _.pluck(samples, 'value');
});
var avgs = _.map(_.zip.apply(_, values), _.avg);
var ys = _.compact(avgs);
// graph data
var data = { x: xs.slice(xs.length - ys.length), y: ys };