ข้อกำหนดเกี่ยวกับฉบับร่าง ECMAScript 6 เป็นที่พอใจมากของนักพัฒนาซอฟต์แวร์ JavaScript สมัยใหม่ เราได้พูดถึงชั้นเรียนคอลเล็กชันใหม่บางส่วนและการวนซ้ำ for..of
ในโพสต์ก่อนหน้า ในโพสต์นี้เราจะพูดถึงสิ่งที่มาพร้อมกับลูป for..of
: ฟังก์ชันของโปรแกรมสร้าง
ตอนนี้มีผู้จัดเนื้อหาที่ยอดเยี่ยมที่พูดถึงเหตุผลและวิธีการใช้งานโปรแกรมสร้างไว้แล้ว กล่าวโดยสรุป เครื่องมือสร้างเป็นฟังก์ชันพิเศษที่สร้างตัวจำลอง ส่วนตัวจำลองคือออบเจ็กต์ที่มีเมธอด next()
ซึ่งเรียกใช้เพื่อรับค่าได้ ภายในฟังก์ชันของโปรแกรมสร้าง คีย์เวิร์ด yield
จะแสดงค่าสำหรับ next()
การใช้ yield
ระงับการดำเนินการของฟังก์ชันโปรแกรมสร้างจะคงสถานะไว้จนกว่าจะมีการเรียกใช้ next()
อีกครั้ง ซึ่งเป็นเวลาที่โค้ดจะเริ่มย้อนกลับและต่อไปจนกระทั่งyield
ค่าอื่น (หรือจนกว่าฟังก์ชันของโปรแกรมสร้างจะหยุดทำงาน) มีกรณีการใช้งานตามรูปแบบบัญญัติสำหรับฟังก์ชันของโปรแกรมสร้างหลายกรณี เช่น การใช้ฟังก์ชันเหล่านี้เพื่อทำซ้ำตัวเลขในลำดับฟีโบนักชี
เรามาดูข้อมูลเบื้องต้นอย่างละเอียดกันด้วยตัวอย่าง JavaScript ที่ครอบคลุมข้อผิดพลาด หรือ "ข้อมูลเล็กๆ น้อยๆ" ของการทำงานร่วมกับโปรแกรมสร้าง เรามีความคิดเห็นมากมายตลอดทั้งกระบวนการ และคุณสามารถทดลองอ่านโค้ดเวอร์ชันใช้งานจริงก่อนอ่านได้
แล้วสรุปประเด็นสำคัญจากโค้ดมีอะไรบ้าง
ขั้นแรก การสร้างเครื่องมือสร้างจะทำให้ตัวทำซ้ำที่ไม่ซ้ำกันซึ่งมีสถานะเฉพาะตัว และคุณจะส่งผ่านพารามิเตอร์ไปยังตัวสร้างโปรแกรมสร้างที่ควบคุมลักษณะการทำงานได้
วิธีที่ 2 คุณสามารถส่งพารามิเตอร์ไปเมื่อเรียกใช้เมธอด next()
ของตัววนซ้ำ ค่านั้นจะถูกกำหนดให้กับอะไรก็ตามที่อยู่ทางด้านซ้ายของคำสั่ง yield
จากการเรียกใช้ซ้ำๆ ก่อนหน้า วิธีนี้เป็นวิธีที่ยอดเยี่ยมในการเปลี่ยนเอาต์พุตของตัวดำเนินการซ้ำ ซึ่งเราจะใช้ในการควบคุมว่าจะให้คำที่แสดงผลเป็นตัวพิมพ์ใหญ่หรือไม่ หากต้องการส่งผลต่อค่าแรกสุดที่ได้รับ ให้ดำเนินการผ่านพารามิเตอร์ไปยังตัวสร้างของโปรแกรมสร้าง
และสุดท้าย โปรแกรมสร้างสามารถสร้างตัวจำลองแบบจำกัดหรือไม่มีที่สิ้นสุด หากคุณใช้งานตัววนซ้ำที่ไม่มีที่สิ้นสุด ให้ตรวจสอบว่าคุณมีเงื่อนไขเทอร์มินัลบางอย่างตามค่า yield
ed เนื่องจากการเขียนลูปที่ไม่สิ้นสุดโดยไม่ตั้งใจนั้นง่ายมาก โดยเฉพาะเมื่อใช้ for..of
เพื่อการทำซ้ำ หากคุณใช้งานตัวซ้ำแบบจำกัดผ่านการเรียกใช้ next()
พร็อพเพอร์ตี้ .done
ของออบเจ็กต์ที่ส่งกลับจะส่งสัญญาณว่าการทำซ้ำเสร็จสมบูรณ์หรือไม่
เราหวังว่าตัวอย่างนี้ รวมถึงแหล่งข้อมูลอื่นๆ ที่มีอยู่บนเว็บจะทำให้คุณรู้สึกตื่นเต้น และทำให้คุณคิดหาวิธีใช้เครื่องมือสร้างในโค้ดของตัวเองได้ Firefox เวอร์ชันเริ่มต้นด้วย 31 และ Chrome เริ่มต้นจากเครื่องมือสร้างการสนับสนุน 39 เวอร์ชันในตัว โครงการ Regenerator มีการสนับสนุนโปรแกรมสร้างสำหรับเบราว์เซอร์อื่นๆ ซึ่งมีตัวเลือกให้ใช้ Traceur เช่นกัน
ขอขอบคุณ Erik Arvidsson ที่ช่วยอ่านบทความนี้