【发布时间】:2012-12-06 12:32:07
【问题描述】:
我正在处理客户端脚本,需要进行繁重的计算,例如在数组中推送大量对象,这会导致 JavaScript 停止响应并且浏览器挂起并发出警报:
是否有处理这些计算的最佳实践或设计模式,我搜索并找到了许多不同的方法来处理这些情况,但解决方案难以实施,因此我需要最佳实践且易于理解?
(我只是在编写代码,但我需要一个跨浏览器的通用解决方案,即多线程等)
示例代码(系列包含数千个对象):
for (var series = 0; series < chartObj.masterChart.series.length; series++) {
var detailData = [];
jQuery.each(chartObj.masterChart.series[series].data, function (i, point) {
if (point.x >= chartObj.RangeSelectedMinValue && point.x <= chartObj.RangeSelectedMaxValue) {
detailData.push({
x: point.x,
y: point.y
});
}
});
chartObj.detailChart.series[series].setData(detailData);
}
【问题讨论】:
-
在我看来,Javascript 不应该做任何繁重的计算。繁重意味着需要大量时间的大量数据或非常困难的算法。
-
给我们看一些代码或告诉逻辑来评论
-
这是一个相当开放的话题。发布一些代码以使其具体化将是更好的一步。
-
很多事情很难实现。解决办法不是找到更容易的事情,而是更加努力。
-
@ZaheerAhmed:我们可以说“避免 Massive 循环,避免 Huge 数组/对象,don't use heavy operations in each iteration of a loop, if it can be done outside of it,但所有这些都是方式为 StackOverflow Q&A 格式的通用方式。
标签: javascript design-patterns heavy-computation