เรียนรู้การใช้งาน toLocaleDateString เพื่อแปลงออบเจ็กต์ของ date เป็นข้อความวันที่ภาษาไทย
ก่อนหน้านี้หากเราต้องการรอการทำงานช่วงเวลาหนึ่งถึงค่อยทำงานถัดไป เช่น หน่วงเวลาไว้ 1 วินาทีก่อนค่อยเริ่มทำงานอื่น เราอาจใช้ Promise ควบคู่กับ setTimeout เพื่อแก้ปัญหาดังกล่าวได้ดังนี้
1await new Promise((resolve) => {2 setTimeout(resolve, 1_000)3})45// ครบ 1 วินาที ค่อยทำอย่างอื่น
สำหรับ Node.js เวอร์ชัน 15 เป็นต้นไปได้เพิ่ม Timers Promises API ที่ช่วยให้ฟังก์ชันเวลาต่าง ๆ คืน Promise เราจึงสามารถใช้ async/await เข้าช่วยเพื่อเขียนโค้ดให้สั้นลงได้ ดังนี้
1import { setTimeout } from 'timers/promises'23await setTimeout(1_000)
สำหรับ setTimeout สามารถส่งค่าเมื่อ Promise อยู่ในสถานะ fulfilled ได้ด้วยการระบุค่านั้นในอาร์กิวเมนต์ตัวที่สอง
1import { setTimeout } from 'timers/promises'23const value = await setTimeout(1_000, 'Fulfilled')4console.log(value) // Fulfilled
ความพิเศษของ setTimeout ในเวอร์ชันของ Timers Promises API คือสามารถถูกยกเลิกการทำงานได้ผ่าน signal
1import { setTimeout } from 'timers/promises'23const controller = new AbortController()4await setTimeout(5_000, 'Fulfilled', { signal: controller.signal })
ศึกษาการใช้งาน signal และ AbortController ได้จากบทความ ยกเลิกการ Fetch อย่างไร? รู้จัก AbortSignal และ AbortController
แพคเกจ timers/promises ยังมีฟังก์ชันเวลาอื่น ๆ ได้แก่ setImmediate และ setInterval (เพิ่มมาในเวอร์ชัน 15.9.0) อีกด้วย
1import { setTimeout, setImmediate, setInterval } from 'timers/promises'