最近、Angular のデバウンス機能に慣れてきました。デバウンスの使用例は、ユーザーが入力した内容を (サーバー側で) 保存したいが、キーストロークごとに HTTP 要求を行いたくない場合です。フォームにデバウンス値 500 を指定すると、ユーザーが入力を 0.5 秒間停止したときに、[保存] ボタンをクリックしなくてもデータを保存できます。これはとても便利です。
しかし、私が発見した欠点があります。特に、デバウンス値が高い場合 (ペイロードのサイズによっては高くしたい場合があります)、データが保存される前にユーザーがページから移動する可能性があります。
上記の例では、ユーザーは「Hello!」と入力し、0.5 秒待ってから「はじめまして!」と入力し、デバウンス期間が終了する前に別のページに移動するか、ブラウザーを閉じます。(特に、テキスト入力がナビゲーション コントロールの近くにある場合、これは大げさではありません。) この場合、"Hello!" です。助かるけど「はじめまして!」迷う。
ページから離れたときに不快な Javascript を起動するページ (通常は広告でいっぱいのページ) を見たことがあります。そのため、Angular には、ユーザーがページを離れたときにデバウンス期間が切れたときに起こるであろうことを行う機能があるかどうか疑問に思っていました。 .
もちろん、停電などの例外的な状況では、何があってもデータが失われることは承知しています。