ฉันมีsetInterval
รหัสส่วนหนึ่งวิ่ง 30 ครั้งต่อวินาที สิ่งนี้ใช้งานได้ดี แต่เมื่อฉันเลือกแท็บอื่น (เพื่อให้แท็บที่มีรหัสของฉันไม่ทำงาน) การsetInterval
ตั้งค่าเป็นสถานะไม่ได้ใช้งานด้วยเหตุผลบางประการ
ฉันทำกรณีทดสอบง่าย ๆ นี้ ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
หากคุณเรียกใช้รหัสนี้จากนั้นสลับไปยังแท็บอื่นให้รอสักครู่แล้วย้อนกลับไปภาพเคลื่อนไหวจะดำเนินต่อไปตามขั้นตอนเดิมเมื่อคุณเปลี่ยนไปใช้แท็บอื่น ดังนั้นภาพเคลื่อนไหวจะไม่ทำงาน 30 ครั้งต่อวินาทีในกรณีที่แท็บไม่ทำงาน สิ่งนี้สามารถยืนยันได้โดยนับจำนวนครั้งที่setInterval
เรียกใช้ฟังก์ชันในแต่ละวินาทีซึ่งจะไม่เท่ากับ 30 แต่จะมีเพียง 1 หรือ 2 หากแท็บไม่ทำงาน
ฉันเดาว่าสิ่งนี้ทำโดยการออกแบบเพื่อปรับปรุงประสิทธิภาพ แต่มีวิธีใดที่จะปิดการทำงานนี้หรือไม่ จริง ๆ แล้วมันเป็นข้อเสียในสถานการณ์ของฉัน
Date
มันเกือบจะตลอดเวลาที่ดีที่สุดเพื่อภาพเคลื่อนไหวที่สำคัญเกี่ยวกับปริมาณของเวลาจริงผ่านไปนับตั้งแต่จุดเริ่มต้นของการเคลื่อนไหวในขณะที่อ่านจาก เพื่อที่ว่าเมื่อช่วงเวลาไม่ได้ดำเนินการอย่างรวดเร็ว (ด้วยเหตุผลนี้หรือเหตุผลอื่น ๆ ) แอนิเมชันเพิ่งจะกระตุกขึ้นไม่ช้าลง
Date
วัตถุเพื่อดูว่าเวลาผ่านไปแล้วจริงๆ