使用嵌套循环的JavaScript优化

使用嵌套循环的JavaScript优化,javascript,Javascript,我要在画布上画一大堆点。现在我通过在数据数组上运行x和y的嵌套循环来绘制每个点。这似乎导致firefox显示一个脚本已挂起通知 避免这种情况的最好办法是什么 我认为某种并行循环解决方案会很好,但问题是我不知道有任何这样的方法。如果你只是逐像素创建图像,最好在“图像数据”对象中创建,然后在完成后将其放入画布中。将像素放入数组比逐像素地进行canvas API调用要便宜得多 有一个名为“createImageData()”的方法,用于创建ImageData对象,它实际上只是一个具有高度/宽度的像素数

我要在画布上画一大堆点。现在我通过在数据数组上运行x和y的嵌套循环来绘制每个点。这似乎导致firefox显示一个脚本已挂起通知

避免这种情况的最好办法是什么


我认为某种并行循环解决方案会很好,但问题是我不知道有任何这样的方法。

如果你只是逐像素创建图像,最好在“图像数据”对象中创建,然后在完成后将其放入画布中。将像素放入数组比逐像素地进行canvas API调用要便宜得多

有一个名为“createImageData()”的方法,用于创建ImageData对象,它实际上只是一个具有高度/宽度的像素数组。像素被组织为一个简单的线性阵列,每组四个阵列元素代表一个像素。这四个值只是红色、绿色和蓝色值,以及不透明度的alpha值


当代码填充了所有像素值后,只需调用“putImageData()”即可将其绘制到画布上。

需要使用代码了解如何对其进行优化。如果宽度为1000,高度为1000,则必须绘制1.000.000点。这不能通过更好的循环来改善。它不能被加速,但响应能力可以恢复:分批处理,每一个都通过setTimeout()顺序启动,不要试图一次处理太多。例如,在每个完整的内部循环通过setTimeout()调用函数以启动下一个循环后,不要在For循环内执行该操作,因为For循环不会产生结果,而是立即执行。我不会绘制所有点,只绘制一些点。