私は、次の機能を持っている:私はそれを呼び出している関数にsetTimeout()を呼び出すメモリの問題?
var counter = 0;
test();
function test() {
counter++;
alert(counter);
setTimeout(function() { test() }, 100);
}
これは、メモリに問題を作成しますか?つまり、test()関数はsetTimeout()によって再び呼び出される前に正常に終了するでしょうか?
私のテストでは、関数を再度呼び出す前に終了していることが示されていますが、同僚がメモリの問題を引き起こすことは確実です。
更新: Chromeでテストを行い、タスクマネージャーを監視していて、メモリの使用状況は変わりませんでした。
testSetTimeout(0);
function testSetTimeout(a) {
$("body").html(a);
var v = new Array();
for (var i = 0; i < 20000; i++)
v.push("abcdefghijklmnopqrstuvwxyz");
setTimeout(function() { testSetTimeout(a + 1); }, 0);
}
しかしながら直接testSetTimeout()を呼び出すために、このコードを変更するとき、それは約8000回実行した後、Chromeで、アウトcrapped。
これはメモリの問題を引き起こす可能性がどのように表示されません。 'setTimeout'はその引数を呼び出し元と同じ関数呼び出しスタック上で直ちに実行しません。あなたの同僚が問題の可能性があると感じたら、問題を示すべきである。 – Amy