เมื่อใช้ setTimeout คุณต้อง clearTimeout หรือไม่?


89

มีคนบอกฉันว่าเมื่อคุณใช้คุณต้องล้างมันด้วยsetTimeout clearTimeoutฉันเข้าใจได้ก่อนหมดเวลา แต่ทำไมหลังจากนั้น หรือไม่จริง?

คำตอบ:


88

ไม่เป็นความจริง - ไม่มีอันตรายใด ๆ ในการล้างการหมดเวลาหลังจากเสร็จสิ้น แต่ก็ไม่จำเป็น

ตามข้อกำหนด :

หากหมายเลขอ้างอิงไม่ระบุรายการในรายการตัวจับเวลาที่ใช้งานอยู่ของอ็อบเจ็กต์ WindowOrWorkerGlobalScope ที่เรียกใช้ [clearTimeout] เมธอดจะไม่ทำอะไรเลย

กล่าวอีกนัยหนึ่งก็คือการไม่ดำเนินการ ไม่มีอะไรเกิดขึ้นและจะไม่มีข้อผิดพลาดเกิดขึ้น


53

คุณไม่จำเป็นต้องใช้จริงclearTimeoutคุณจะใช้ก็ต่อเมื่อคุณต้องการยกเลิกการหมดเวลาที่คุณตั้งไว้ก่อนที่จะเกิดขึ้น

ก็มักจะปฏิบัติมากขึ้นที่จะใช้clearIntervalด้วยsetIntervalเพราะsetIntervalมักจะทำงานไปเรื่อย ๆ


16

clearTimeoutจำเป็นสำหรับการยกเลิกการหมดเวลาเท่านั้น หลังจากหมดเวลาทำงานแล้วสามารถปล่อยให้อยู่คนเดียวได้อย่างปลอดภัย clearIntervalโดยทั่วไปมีความจำเป็นมากกว่ามากเพื่อป้องกันไม่ให้ดำเนินการต่อไปอย่างไม่มีกำหนด


10

ไม่มีเหตุผลที่จะต้องล้างหลังจากเสร็จสิ้น setIntervalเพื่อนของคุณอาจจะได้รับสับสนกับ


10

ไม่setTimeoutหยุดทำงานหลังจากโทร 1 ครั้ง เพื่อที่จะหยุดแต่คุณต้องใช้setInterval clearIntervalหากคุณสร้างลูปที่ไม่มีที่สิ้นสุดsetTimeoutก็clearTimeoutสามารถใช้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.