जवाबों:
मुझे लगता है कि कॉलबैक के लिए एक फ़ंक्शन के अंतिम तर्क के रूप में आना एक उपयोगी सम्मेलन है। उदाहरण के लिए, यह आमतौर पर Node.js API के साथ होता है। तो उस के साथ दिमाग में:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
दी गई, यह setTimeout
आपके द्वारा किए जाने वाले हर अतिरिक्त कॉल के ओवरहेड को जोड़ता है ; लेकिन आज के जेएस दुभाषियों में, प्रदर्शन की कमी तब तक महत्वहीन है जब तक आप इसे प्रति सेकंड हजारों बार नहीं कर रहे हैं। (और क्या आप प्रति सेकंड हजारों टाइमआउट सेट कर रहे हैं, वैसे भी?)
बेशक, एक अधिक सरल दृष्टिकोण बस अपने कॉलबैक को नाम देना है, जो वैसे भी अधिक पठनीय कोड का उत्पादन करता है (जशकेन इस मुहावरे का एक बड़ा प्रशंसक है):
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
कोष्ठक वैकल्पिक हैं, लेकिन अल्पविराम के साथ लाइन शुरू करना मुझे गन्दा लगता था।
setTimeout
और खोलने वाली जगह महत्वपूर्ण है। कोष्ठक के पहले पैरामीटर के रूप में कोष्ठक बंद होने के आस-पास के स्थान का अर्थ है; अगर यह सीधे टी के बाद होता है तो कॉफ्रेस को कोष्ठकों से दोनों मापदंडों को संलग्न करने की उम्मीद होगी।
setTimeout ->
something param
, 1000
something param
एक ही लाइन पर है setTimeout
, तो यह अलग तरह से पार्स हो जाता है।
यह लगभग एक समान अनुवाद होगा (धन्यवाद @ जोएल म्यूएलर):
setTimeout (-> something param), 1000
ध्यान दें कि यह सटीक अनुवाद नहीं है क्योंकि अनाम फ़ंक्शन something(param)
आपके स्निपेट में अपरिभाषित के बजाय कॉल करने का परिणाम देता है ।
setTimeout (() -> something param), 1000
मुझे यह करने का सबसे अच्छा तरीका मिला,
setTimeout (-> alert "hi"), 1000