Direct Web Remoting (DWR) JavaScript ライブラリ ファイルを使用していますが、Safari (デスクトップおよび iPad) でのみエラーが発生します。
それは言う
最大呼び出しスタック サイズを超えました。
このエラーは正確には何を意味し、処理が完全に停止するのでしょうか?
Safari
また、ブラウザの修正(実際にはiPad Safari
、
JS:実行がタイムアウトを超えました
これは同じコールスタックの問題であると想定しています)
ベストアンサー1
これは、コードのどこかで関数を呼び出し、その関数がさらに別の関数を呼び出すという動作を、呼び出しスタックの制限に達するまで繰り返すことを意味します。
これはほとんどの場合、満たされていない基本ケースを持つ再帰関数が原因です。
スタックの表示
このコードを検討してください...
(function a() {
a();
})();
数回の呼び出し後のスタックは次のとおりです...
ご覧のとおり、呼び出しスタックは、ブラウザにハードコードされたスタック サイズまたはメモリ不足という制限に達するまで増加します。
これを修正するには、再帰関数に満たすことができる基本ケースがあることを確認します...
(function a(x) {
// The following condition
// is the base case.
if ( ! x) {
return;
}
a(--x);
})(10);