Javascript และ NodeJS วน loop แบบมี delay ยังไงนะ?
เนื่องจาก Javascript และ NodeJS (จริงๆ ก็ภาษาเดียวกัน) ไม่มี function สำหรับการทำ delay หรือ sleep มาให้เพราะถูกออกแบบมาให้ทำงานบนเบราว์เซอร์แต่แรกจึงมีแค่ setTimeout() และ setInterval() เท่านั้นซึ่งก็เป็น callback based ทั้งคู่ ถ้าใช้งานปกติทั่วไปมันให้ผลเหมือนกับ function delay หรือ sleep ในภาษาอื่นครับ แต่ถ้าใช้ใน loop จะไม่ให้ผลอย่างนั้น
ถ้าต้องการวน loop แล้วให้มี delay ล่ะจะทำยังไง? ก็ทำได้หลายเทคนิิคครับตั้งแต่ใช้ time เข้ามาช่วยคือบวกเวลาปัจจุบันเพิ่มด้วยเวลาที่อยาก delay วนรอบรอจนกว่าจะได้เวลาที่ต้องการแล้วก็จบ loop วิธีนี้ถึงจะทำงานได้เหมือนกันแต่มันใช้ CPU เยอะมาก วิธีที่ดีกว่าคือดัดแปลงจาก setTimeout() ตามตัวอย่างโค้ดข้างล่างนี้เลย ดัดแปลงกันตามสะดวก
ไม่มีความคิดเห็น:
แสดงความคิดเห็น