javascript - วิธีเขียน setTimeout พร้อมพารามิเตอร์โดยใช้ Coffeescript
โปรดบอกฉันว่าต้องเขียน JavaScript ด้านล่างเป็น CoffeeScript อย่างไร
setTimeout(function(){
something(param);
}, 1000);
คำตอบ #1
ฉันคิดว่ามันเป็นธรรมเนียมที่มีประโยชน์ที่ให้ callback เป็นอาร์กิวเมนต์สุดท้ายของฟังก์ชัน ซึ่งโดยปกติแล้วนี่เป็นกรณีของ API ของ Node.js ตัวอย่างเช่น ดังนั้นเมื่อคำนึงถึงเรื่องนี้:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
แน่นอนว่าสิ่งนี้เพิ่มภาระของการเรียกฟังก์ชันเพิ่มเติมให้กับทุกครั้งที่คุณใช้ setTimeout; แต่ในตัวแปล JS ปัจจุบัน ผลกระทบต่อประสิทธิภาพนั้นไม่สำคัญเว้นแต่ว่าคุณจะทำหลายพันครั้งต่อวินาที (แล้วคุณกำลังทำอะไรที่ต้องตั้ง timeout เป็นพันครั้งต่อวินาทีล่ะ?)
แน่นอน วิธีที่ตรงไปตรงมามากกว่าคือการตั้งชื่อ callback ของคุณโดยตรง ซึ่งมักจะทำให้โค้ดอ่านง่ายขึ้นอยู่ดี (jashkenas เป็นแฟนตัวยงของสำนวนนี้):
callback = -> something param
setTimeout callback, 1000
คำตอบ #2
setTimeout ( ->
something param
), 1000
วงเล็บเป็นทางเลือก แต่การเริ่มบรรทัดด้วยเครื่องหมายจุลภาคดูยุ่งเหยิงสำหรับฉัน
คำตอบ #3
setTimeout ->
something param
, 1000
คำตอบ #4
สิ่งนี้จะส่งผลให้เกิดการแปลที่มีค่าเท่ากันโดยประมาณ (ขอบคุณ @Joel Mueller):
setTimeout (-> something param), 1000
โปรดทราบว่านี่ไม่ใช่การแปลที่ตรงตัวเพราะฟังก์ชันนิรนามจะส่งค่าผลลัพธ์จากการเรียกใช้ something(param) แทนที่จะเป็น undefined ตามที่อยู่ในโค้ดตัวอย่างของคุณ
คำตอบ #5
ฉันพบว่านี่เป็นวิธีที่ดีที่สุดในการทำสิ่งเดียวกัน
setTimeout (-> alert "hi"), 1000
