私のコードが正しく動作する理由を理解するのに問題があります:)
これが私のコードの一部です:
function updateForNextLecturer(current_id, all_lecturers, progressbar)
{
$.getJSON(
'/' + root + 'custom/ajax/update_timetable_lecturer.php?id=' + all_lecturers[current_id],
function(data)
{
if (data.successfull == 0) {
$.stickr({note: "Error occurred.", className: "classic error"});
throw new Error("error");
}
else {
percent = Math.round((current_id + 1) * 100.0 / all_lecturers.length);
progressbar.progressbar({value: percent});
if (current_id + 1 < all_lecturers.length)
updateForNextLecturer(current_id + 1, all_lecturers, progressbar);
else
$.stickr({note: "Success", className: "classic"});
}
}
);
}
このコードは、すべての講師の時間割を更新するために必要です。リクエストは非同期で次から次へと送信されるため、Web サーバーに大きな負荷がかかることはありません。
リクエストを次々と行うには、再帰コールバックを使用する必要があります (これが唯一の解決策だと思います)。そして問題は、なぜこれが正しく機能するのか、PHP のように最大ネスト レベルがないのでしょうか? PHPでは、次のエラーが発生する可能性があります
Fatal error: Maximum function nesting level of '100' reached, aborting!
この関数は数千のリクエストでテストしたため、ネスト レベルは数千程度ですが、エラーは発生しませんでした。それは、JavaScript に入れ子の制限がまったくないからですか、それとも私が何かを理解していないからですか?
前もって感謝します。