考えやすいのは、非同期有効期限の問題です。第 1 レベルのメニューが変更され、第 2 レベルのメニュー コンテンツのプルがトリガーされるが、ネットワーク速度が遅く、プロセスに時間がかかると想像してください。 3秒。 1 秒後、ユーザーは第 1 レベルのメニューを再度変更し、第 2 レベルのメニューのコンテンツのプルを再びトリガーします。このとき、ネットワーク速度は速くなり、データは 1 秒後に返され、第 2 レベルのメニューはレベルのメニューが再レンダリングされますが、1 秒後に第 1 レベルのメニューが再レンダリングされます。このリクエストの結果が返され、第 2 レベルのメニューが再度レンダリングされます。ただし、実際には、第 1 レベルのメニューはそれ以来変更されており、コンテンツの有効期限が切れています。このレンダリングは間違っています。クロージャを使用してデータの有効期限チェックを実行できます。
考えにくいのは、同期有効期限の問題です (実際には非同期でもありますが、IO 対話がなければ、バッファー時間が 0 のタイムアウト関数です)。イベント キューが存在するため、注意しないと発生する可能性があり、有効期限が切れると、コード内に関連するコメントが表示されます。
淡淡烟草味2017-05-18 11:00:31
作者が言っているように、バッファ時間0のタイムアウト関数です。第 1 レベルのメニューから第 2 レベルのメニューへの更新が setTimeout() 関数に記述されている場合、それは非同期操作となり、後続の操作が最初にインターフェイスを更新し、前の操作の結果が期限切れになることもあります。 。