หน่วงเวลาการใช้มัลติฟังก์ชั่นโดยใช้ป้ายกำกับ
นี่คือทางออกที่ฉันทำงานด้วย มันจะชะลอการดำเนินการใด ๆ เกี่ยวกับฟังก์ชั่นที่คุณต้องการ อาจเป็นข้อความค้นหาแบบเลื่อนลงอาจเป็นการคลิกอย่างรวดเร็วที่ปุ่มก่อนหน้าหรือถัดไป สิ่งนี้ใช้ออบเจกต์โกลบอลที่เก็บแต่ละครั้งที่เรียกใช้งานและเปรียบเทียบกับคำขอปัจจุบันมากที่สุด
ดังนั้นผลลัพธ์คือคลิก / การกระทำล่าสุดเท่านั้นที่จะถูกเรียกเนื่องจากการร้องขอเหล่านั้นถูกเก็บไว้ในคิวหลังจากเรียก X มิลลิวินาทีหากไม่มีการร้องขออื่นที่มีป้ายชื่อเดียวกันอยู่ในคิว!
function delay_method(label,callback,time){
if(typeof window.delayed_methods=="undefined"){window.delayed_methods={};}
delayed_methods[label]=Date.now();
var t=delayed_methods[label];
setTimeout(function(){ if(delayed_methods[label]!=t){return;}else{ delayed_methods[label]=""; callback();}}, time||500);
}
คุณสามารถตั้งค่าเวลาหน่วงของคุณเอง (เป็นทางเลือกค่าเริ่มต้นเป็น 500ms) และส่งข้อโต้แย้งการทำงานของคุณใน "แฟชั่นปิด"
ตัวอย่างเช่นถ้าคุณต้องการเรียกฟังก์ชั่นการร้อง:
function send_ajax(id){console.log(id);}
หากต้องการป้องกันคำขอ send_ajax หลายคำขอคุณจะล่าช้าโดยใช้:
delay_method( "check date", function(){ send_ajax(2); } ,600);
ทุกคำขอที่ใช้ป้ายกำกับ "วันที่ตรวจสอบ" จะถูกทริกเกอร์เฉพาะในกรณีที่ไม่มีการร้องขออื่น ๆ ภายในระยะเวลา 600 มิลลิวินาที อาร์กิวเมนต์นี้เป็นทางเลือก
ป้ายกำกับความเป็นอิสระ (เรียกใช้ฟังก์ชันเป้าหมายเดียวกัน) แต่เรียกใช้ทั้งสอง:
delay_method("check date parallel", function(){send_ajax(2);});
delay_method("check date", function(){send_ajax(2);});
ผลลัพธ์ในการเรียกใช้ฟังก์ชันเดียวกัน แต่หน่วงเวลาอย่างอิสระเนื่องจากฉลากของพวกเขาแตกต่างกัน