เผยแพร่เมื่อวันที่ 17 มกราคม 2025
การทำงานแบบไม่พร้อมกันบนเว็บอาจเป็นเรื่องยาก และงานจำนวนมากบนเว็บเกี่ยวข้องกับการทำงานแบบไม่พร้อมกัน ไม่ว่าจะเกี่ยวข้องกับการเรียกใช้ fetch
หรือการดําเนินการแบบไม่พร้อมกันอื่นๆ เบราว์เซอร์จะช่วยให้คุณทํางานได้ง่ายขึ้นเมื่อเมธอดในตัวมีการจัดการข้อผิดพลาดที่มีประสิทธิภาพ ข้อมูลนี้ระบุไว้แล้วสำหรับ Promise โดยใช้เมธอด then
, catch
และ finally
อย่างไรก็ตาม สถาปัตยกรรมโค้ดเบสของแอปพลิเคชันควรมีความยืดหยุ่น และไม่จำเป็นต้องทำทุกอย่างในแอปพลิเคชันแบบไม่พร้อมกัน บางครั้งคุณอาจต้องจัดการผลลัพธ์ของคอลแบ็กในลักษณะที่ง่ายขึ้นในกรณีที่ไม่สนใจว่าคอลแบ็กที่คุณส่งไปยัง Promise
จะเป็นแบบซิงค์หรือไม่ Promise.try
เป็นเมธอดที่ใช้ได้ในเครื่องมือเบราว์เซอร์หลักๆ ทั้งหมด ซึ่งช่วยให้นักพัฒนาแอปดำเนินการได้ง่ายขึ้น จึงถือเป็น Baseline ใหม่
Promise.try
คืออะไรและทำงานอย่างไร
Promise.try
เป็นเมธอดที่สะดวกซึ่งทำให้การจัดการข้อผิดพลาดสำหรับฟังก์ชัน Callback แบบซิงค์ง่ายขึ้นกว่าการใช้ Promise.resolve
// If the callback is synchronous and it throws
// an exception, the error won't be caught here:
new Promise(resolve => resolve(callback());
// But it will be here:
Promise.try(callback);
จากนั้นใช้วิธีการ then
, catch
และ finally
เพื่อจัดการการแก้ไขหรือการปฏิเสธ Promise
Promise.try(callback)
.then(result => console.log(result))
.catch(error => console.log(error))
.finally(() => console.log("All settled."));
จะเกิดอะไรขึ้นหากฟังก์ชันการเรียกกลับมีอาร์กิวเมนต์ คุณจัดการปัญหานี้ได้ 2 วิธี ดังนี้
// This creates an extra closure, but works:
Promise.try(() => callback(param1, param2));
// This doesn't create an extra closure, and still works:
Promise.try(callback, param1, param2);
ประโยชน์หลักของการใช้ Promise.try
คือช่วยให้คุณใช้ Promise ได้อย่างสอดคล้องกัน ไม่ว่าคุณจะส่งการเรียกคืนแบบซิงโครนัสหรือแบบอะซิงโครนัสก็ตาม ซึ่งหมายความว่าในกรณีที่ฟังก์ชันยูทิลิตีส่งการเรียกกลับไปยัง Promise
ที่ใช้กันอย่างแพร่หลายในโค้ดของคุณ การใช้ Promise.try
จะช่วยให้การจัดการข้อผิดพลาดของการเรียกกลับที่คุณส่งไปยัง Promise
เป็นไปอย่างเหมาะสม หากต้องการข้อมูลเพิ่มเติม ข้อกังวลอื่นๆ ที่อาจเกิดขึ้น หรือกรณีการใช้งาน โปรดดูเอกสารประกอบ MDN สําหรับ Promise.try
บทสรุป
ตอนนี้ Promise.try
อยู่ในสถานะ "พร้อมใช้งานเป็นเวอร์ชันพื้นฐาน" แล้ว คุณจึงควรใช้ Promise.try
ในเครื่องมือเบราว์เซอร์หลักๆ ทั้งหมดได้ เมื่อเวลาผ่านไป คุณควรจะสามารถใช้ Promise.try
ในเว็บแอปพลิเคชันได้อย่างมั่นใจมากขึ้นว่าจะเป็นแพลตฟอร์มเว็บที่ทำงานร่วมกันได้อย่างเสถียร