2017-05-26 7 views
0

私は、将来5分の予定の高価なAPIコールを、ユーザがパラメータを変更したときにトリガすることを検討しています。ユーザーが10秒後に再びパラメータを変更した場合、私は4m50sでの呼び出しと5mでの呼び出しを望んでいません。私は本質的に4m50sでコールをキャンセルしたいと思います。JavaScriptの将来のコールをスケジュールし、保留中のコールをキャンセルします

私は呼び出し前に最小限の時間を強制するlodashで見つかりましたが、保留中の呼び出しは実行されませんので、速い呼び出しを防ぎながらも不要な呼び出しを行います。これを行うためのクリーンなアイデア?

https://lodash.com/docs/4.17.4#debounce

答えて

1

debounceドキュメントから:

デバウンス機能は、だから、再起動する前に、あなたがmethod.cancelを呼び出すことを確認してください遅延FUNC呼び出し

をキャンセルするcancel方法が付属しています変更されたパラメータを有するmethod

var debounced = _.debounce(api_func, 5 * 60 * 1000, { trailing: true }); 

とトリガーハンドラ(その範囲で上記の変数debouncedにアクセスしていなければならない)で:

また
debounced.cancel(); 
debounced(params); 

、解決策は自明べきちょうど、内蔵タイマ機能を使用します:

var timer; 

とトリガーで:

clearTimeout(timer); 
timer = setTimeout(api_func, 5 * 6 * 1000); 
+0

@ ss2k上記2つの方法のどちらを使用しましたか? – Alnitak

+0

私はすでにロダシュに依存していたので、デバウンスに行った。 – ss2k

関連する問題