【发布时间】:2013-06-29 04:55:54
【问题描述】:
我正在尝试随着时间的推移错开 for 循环以绘制网格并降低系统负载。例如:对于一个 100x100 的网格,它将进行 10,000 次迭代,而不是立即完成所有迭代,我想做 1,000 次然后等待 250 毫秒并继续下一个 1,000 次直到完成。
我似乎无法弄清楚为什么它不起作用。
在这个例子中,我试图这样做,但它只绘制了前 1000 个方格,但 console.log('iterate'); 仍在运行并且迭代值继续!
在这个例子中,我删除了setTimeout,而是调用了两次函数,以模拟2个即时效果的循环,并绘制了2000个正方形!
为什么 setTimeout 中的函数会阻止代码工作?
【问题讨论】:
-
你试过setInterval吗?
-
setInterval 将尝试每隔 250 毫秒精确地运行一次代码,无论之前的代码是否已完全执行,这无助于分散负载。在每个函数的末尾都有一个 setTimeout,确保代码已经运行,并给它一点喘息的时间。
-
我明白你的意思。它和你一样让我感到困惑,我不明白为什么超时没有正确触发。
-
这很奇怪,因为它会触发,并且迭代变量会按预期递增!
iterate 0 0,iterate 9 99,iterate 19 98,iterate 29 97,iterate 39 96,iterate 49 95,iterate 59 94,iterate 69 93,iterate 79 92,iterate 89 91,iterate 99 90函数开始时触发日志
标签: javascript html canvas iteration easeljs