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

throttle

تابعی ایجاد می‌کند که اجرای تابع داده‌شده را به حداکثر یک بار در هر بازه زمانی مشخص‌شده محدود می‌کند.

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

پارامترها

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

تابعی که در هر بازه زمانی مشخص‌شده حداکثر یک بار اجرا می‌شود.

delaynumberالزامی

حداقل زمان بر حسب میلی‌ثانیه که باید بین دو اجرای تابع سپری شود.

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

(...args: TArgs) => void

تابعی را برمی‌گرداند که تعداد دفعات اجرای تابع اصلی را در طول زمان کنترل می‌کند.

مثال‌ها

01

استفاده پایه

فراخوانی‌های تکراری در طول بازه delay نادیده گرفته می‌شوند.

TypeScript
const log = throttle(() => {
  console.log("Executed");
}, 1000);

log();
// Executed

log();
// Ignored

log();
// Ignored
02

اجرا پس از پایان delay

پس از گذشت delay از آخرین اجرا، فراخوانی بعدی می‌تواند اجرا شود.

TypeScript
const log = throttle(() => {
  console.log("Executed");
}, 1000);

log();
// Executed

// After 1000ms or more:
log();
// Executed
03

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

آرگومان‌های فراخوانی مجاز مستقیماً به تابع اصلی ارسال می‌شوند.

TypeScript
const logValue = throttle((value: string) => {
  console.log(value);
}, 1000);

logValue("first");
// first

logValue("second");
// Ignored if called before the delay expires
04

مناسب برای رویدادهای پرتکرار

می‌توان از throttle برای محدود کردن تعداد دفعات پاسخ تابع به رویدادهای پرتکرار استفاده کرد.

TypeScript
const handleScroll = throttle(() => {
  console.log("Scroll handled");
}, 200);

window.addEventListener("scroll", handleScroll);
05

آرگومان‌های متفاوت بین اجراها

فقط آرگومان‌های فراخوانی‌هایی که واقعاً اجرا می‌شوند به تابع اصلی ارسال می‌شوند.

TypeScript
const logValue = throttle((value: number) => {
  console.log(value);
}, 1000);

logValue(1);
// 1

logValue(2);
// Ignored if called before the delay expires

// After the delay:
logValue(3);
// 3
06

بدون اجرای تأخیری

فراخوانی‌هایی که در طول delay نادیده گرفته می‌شوند در صف قرار نمی‌گیرند و بعداً اجرا نمی‌شوند.

TypeScript
const log = throttle(() => {
  console.log("Executed");
}, 1000);

log();
// Executed

log();
// Ignored

// Waiting does not execute the ignored call automatically.
ساخته شده با@cyref/js·مستندات رسمی