我怎样才能以非阻塞的方式处理数字?

时间:2013-12-08 17:43:41

标签: javascript performance backbone.js

我有一个代表图表线的模型的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 };

1 个答案:

答案 0 :(得分:1)

我肯定会关注worker threads