ฟังก์ชันดีบักซ์จะจำกัดอัตราที่ฟังก์ชันสามารถเริ่มทำงานได้ ตัวอย่างเช่น แถบข้อความเติมข้อความอัตโนมัติที่สอบถามเซิร์ฟเวอร์ หากคุณสอบถามเซิร์ฟเวอร์ในการกดแป้นพิมพ์แต่ละครั้ง เซิร์ฟเวอร์จะมีผลกระทบต่อเครือข่ายและหน่วยความจำโดยไม่จำเป็น สิ่งที่คุณทำได้คือจำกัดจำนวนการโทรเหล่านี้ในช่วงเวลาที่กำหนด
คุณสามารถเขียนฟังก์ชัน debounce ของคุณเองที่รับฟังก์ชันจริงของคุณเป็นอาร์กิวเมนต์ และดำเนินการตามอัตราที่จำกัด (ควบคุมปริมาณ)
ตัวอย่าง
const debounce = (cb, time) => { let timeout; return function() { const wrapperFunc = () => cb.apply(this, arguments); clearTimeout(timeout); timeout = setTimeout(wrapperFunc, time); } }
ฟังก์ชันนี้รับการเรียกกลับ 2 อาร์กิวเมนต์และช่วงเวลาที่ควรเรียกใช้ สมมติว่าการเรียก API ครั้งแรกไปที่ 1 มิลลิวินาที และคุณได้ตั้งเวลาไว้ที่ 250 มิลลิวินาที จนถึง 251 มิลลิวินาที การเรียกใหม่จะไม่เกิดขึ้นกับ API ไม่ว่าจะเรียกใช้ฟังก์ชันนี้กี่ครั้งก็ตาม คุณสามารถแทนที่การเรียกใช้ฟังก์ชันของคุณเองได้โดยใช้การโทรนี้