私は、完了時にsetTimeout()で再キューする機能を持っています。 Chrome DevToolsが再帰的に呼び出しているように見える理由を説明できますか?私の理解は、コールスタックは各呼び出しで明確にすべきです。setTimeout()がChrome DevToolsで呼び出しスタックを乱すのはなぜですか?
:ブレークポイントがヒットし
<html>
<head>
<script>
function main() {
setTimeout(main, 100); // set breakpoint here
}
main();
</script>
</head>
<body></body>
</html>
初めて私はこれを参照してください。
は、この非常に簡単な例を見てみましょうFirefoxの開発者ツールは私が期待していることを行い、ブレークポイントに達するたびにスタック上に関数のインスタンスを1つだけ表示します。
私は認識していないんだか、この単なるデベロッパーツールUIの事があるクロームの下で起こって微妙な参照キャプチャのいくつかの種類がありますか?
これはdevtoolsのUIです。コールスタックの深さは1つだけですが、現在のコールがどこからエンキューされたかがわかります。これは、関数がなぜ動いているのか、それが呼び出されたコンテキストを追跡するのに便利です。 –
ありがとう@FredStark。私はユーティリティを見ることができますが、私のプログラムが実行されるときにコールスタックリストが無限に成長するのを防止する方法はありますか? (非同期スタックトレースをオフにすることなく) – rkagerer