CyrefJS
CCyrefJS
EN
بازگشت به مستندات
تابع/از نسخه 1.38.0

debounce

اجرای تابع را تا زمانی که مدت مشخصی از آخرین فراخوانی گذشته باشد به تأخیر می‌اندازد.

debounce(fn, delay):(...args: TArgs) => void

پارامترها

fn(...args: TArgs) => voidالزامی

تابعی که پس از گذشت زمان مشخص‌شده بدون فراخوانی جدید اجرا می‌شود.

delaynumberالزامی

مدت تأخیر بر حسب میلی‌ثانیه قبل از اجرای تابع.

مقدار بازگشتی

(...args: TArgs) => void

یک تابع debounce شده که هر بار فراخوانی شود تایمر قبلی خود را reset می‌کند.

مثال‌ها

01

استفاده پایه

تابع پس از مدت زمان مشخص‌شده اجرا می‌شود.

TypeScript
import { debounce } from "@cyref/js";

const logMessage = debounce(() => {
  console.log("Executed");
}, 500);

logMessage();
02

ریست شدن زمان تأخیر

فراخوانی دوباره تابع debounce شده، timeout قبلی را لغو کرده و زمان تأخیر را از ابتدا شروع می‌کند.

TypeScript
import { debounce } from "@cyref/js";

const search = debounce((query: string) => {
  console.log("Searching:", query);
}, 500);

search("c");
search("cy");
search("cyref");

// Only the last call is executed after 500ms.
// Searching: cyref
03

ارسال آرگومان

آرگومان‌هایی که به تابع debounce شده ارسال می‌شوند، هنگام اجرای تابع اصلی به آن منتقل می‌شوند.

TypeScript
import { debounce } from "@cyref/js";

const greet = debounce((name: string) => {
  console.log(`Hello, ${name}!`);
}, 300);

greet("Amir");

// After 300ms:
// Hello, Amir!
04

چند آرگومان

تابع debounce شده می‌تواند چند آرگومان را با همان typeهای تابع اصلی دریافت کند.

TypeScript
import { debounce } from "@cyref/js";

const calculate = debounce(
  (a: number, b: number) => {
    console.log(a + b);
  },
  500,
);

calculate(10, 20);

// After 500ms:
// 30
05

فراخوانی‌های متوالی

اگر چند فراخوانی قبل از تمام شدن زمان تأخیر انجام شوند، فقط آخرین فراخوانی اجرا می‌شود.

TypeScript
import { debounce } from "@cyref/js";

const save = debounce((value: string) => {
  console.log("Saved:", value);
}, 1000);

save("first");

setTimeout(() => {
  save("second");
}, 300);

setTimeout(() => {
  save("third");
}, 600);

// Only "third" is executed after the final 1000ms delay.
// Saved: third
06

مناسب برای رویدادهای ورودی

می‌توان از debounce برای به‌تأخیر انداختن callbackهایی که مرتب اجرا می‌شوند، مانند رویدادهای input یا search، استفاده کرد.

TypeScript
import { debounce } from "@cyref/js";

const handleSearch = debounce((value: string) => {
  console.log("Search:", value);
}, 400);

handleSearch("Java");
handleSearch("JavaScript");

// Only the latest call is executed after 400ms.
// Search: JavaScript
ساخته شده با@cyref/js·مستندات رسمی