useDebounceFn
関数の実行をデバウンスします。
デバウンスは、過負荷のウェイターです。リクエストを送り続けると、リクエストが無視され、最新の問い合わせについて考える時間を与えるまで、リクエストは処理されません。
デモ
使用法
js
import { useDebounceFn } from '@vueuse/core'
const debouncedFn = useDebounceFn(() => {
// do something
}, 1000)
window.addEventListener('resize', debouncedFn)
lodash debounceと同様に、最大待機時間を持つ3番目のパラメーターを渡すこともできます。
js
import { useDebounceFn } from '@vueuse/core'
// If no invokation after 5000ms due to repeated input,
// the function will be called anyway.
const debouncedFn = useDebounceFn(() => {
// do something
}, 1000, { maxWait: 5000 })
window.addEventListener('resize', debouncedFn)
オプションで、Promise操作を使用して関数の戻り値を取得できます。
js
import { useDebounceFn } from '@vueuse/core'
const debouncedRequest = useDebounceFn(() => 'response', 1000)
debouncedRequest().then((value) => {
console.log(value) // 'response'
})
// or use async/await
async function doRequest() {
const value = await debouncedRequest()
console.log(value) // 'response'
}
開発者が戻り値を必要としない場合、未処理の拒否エラーは非常に煩わしいため、デフォルトでは、関数がキャンセルされた場合、Promiseは拒否**されません**。拒否をキャプチャするには、オプション`rejectOnCancel: true`を指定する必要があります。
js
import { useDebounceFn } from '@vueuse/core'
const debouncedRequest = useDebounceFn(() => 'response', 1000, { rejectOnCancel: true })
debouncedRequest()
.then((value) => {
// do something
})
.catch(() => {
// do something when canceled
})
// calling it again will cancel the previous request and gets rejected
setTimeout(debouncedRequest, 500)
推奨される読み物
型宣言
typescript
/**
* Debounce execution of a function.
*
* @see https://vueuse.dokyumento.jp/useDebounceFn
* @param fn A function to be executed after delay milliseconds debounced.
* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
* @param options Options
*
* @return A new, debounce, function.
*/
export declare function useDebounceFn<T extends FunctionArgs>(
fn: T,
ms?: MaybeRefOrGetter<number>,
options?: DebounceFilterOptions,
): PromisifyFn<T>
ソース
コントリビューター
変更履歴
v10.0.0-beta.4
2023年4月13日4d757
- feat(types)!: MaybeComputedRef
をMaybeRefOrGetter
にリネームv9.10.0
2023年1月3日