कैसे Coffeescript द्वारा params के साथ setTimeout लिखने के लिए


208

कृपया मुझे बताएं कि कैसे कॉफ़ी के नीचे जावास्क्रिप्ट लिखना है।

setTimeout(function(){
    something(param);
}, 1000);

हम इसमें .call ('हैलो') को कैसे जोड़ सकते हैं
अतुल

जवाबों:


214

मुझे लगता है कि कॉलबैक के लिए एक फ़ंक्शन के अंतिम तर्क के रूप में आना एक उपयोगी सम्मेलन है। उदाहरण के लिए, यह आमतौर पर Node.js API के साथ होता है। तो उस के साथ दिमाग में:

delay = (ms, func) -> setTimeout func, ms

delay 1000, -> something param

दी गई, यह setTimeoutआपके द्वारा किए जाने वाले हर अतिरिक्त कॉल के ओवरहेड को जोड़ता है ; लेकिन आज के जेएस दुभाषियों में, प्रदर्शन की कमी तब तक महत्वहीन है जब तक आप इसे प्रति सेकंड हजारों बार नहीं कर रहे हैं। (और क्या आप प्रति सेकंड हजारों टाइमआउट सेट कर रहे हैं, वैसे भी?)

बेशक, एक अधिक सरल दृष्टिकोण बस अपने कॉलबैक को नाम देना है, जो वैसे भी अधिक पठनीय कोड का उत्पादन करता है (जशकेन इस मुहावरे का एक बड़ा प्रशंसक है):

callback = -> something param
setTimeout callback, 1000

जब तक आपको नेस्टेड कॉलबैक की आवश्यकता न हो, तब तक
स्टीवन प्रिबिलिनस्की

184
setTimeout ( ->
  something param
), 1000

कोष्ठक वैकल्पिक हैं, लेकिन अल्पविराम के साथ लाइन शुरू करना मुझे गन्दा लगता था।


Parens को बाहर निकालें, और एक कप कॉफी लें, ~)
बिली मून

4
मेरे लिए कोष्ठक का संकलन नहीं करता है। मुझे उन्हें निकालना था, एक अल्पविराम से लाइन शुरू करना, और यह एक आकर्षण की तरह काम करता है।
जेरेमी थिल

कोष्ठक के साथ आप इसे एक पंक्ति में भी कर सकते हैं।

1
@JeremyThille ध्यान दें कि बीच में setTimeoutऔर खोलने वाली जगह महत्वपूर्ण है। कोष्ठक के पहले पैरामीटर के रूप में कोष्ठक बंद होने के आस-पास के स्थान का अर्थ है; अगर यह सीधे टी के बाद होता है तो कॉफ्रेस को कोष्ठकों से दोनों मापदंडों को संलग्न करने की उम्मीद होगी।
21

67
setTimeout -> 
  something param
, 1000

यह सबसे अच्छा है अगर आप सिर्फ एक अनाम फ़ंक्शन का उपयोग करना चाहते हैं।
एलेक्स के

एक नामित फ़ंक्शन के लिए, setTimeout नामFunc, 5000
डिर्क स्मवासर्स

ध्यान दें कि व्हाट्सएप महत्वपूर्ण है। कॉल बिल्कुल ऊपर के रूप में होना चाहिए। अगर something paramएक ही लाइन पर है setTimeout, तो यह अलग तरह से पार्स हो जाता है।
हेनरेबोथा

46

यह लगभग एक समान अनुवाद होगा (धन्यवाद @ जोएल म्यूएलर):

setTimeout (-> something param), 1000

ध्यान दें कि यह सटीक अनुवाद नहीं है क्योंकि अनाम फ़ंक्शन something(param)आपके स्निपेट में अपरिभाषित के बजाय कॉल करने का परिणाम देता है ।


1
बहुत सारे परेंस / अर्धविराम! यह कॉफीस्क्रिप्ट है, अतिरिक्त परनों से छुटकारा पाना आधा बिंदु है। setTimeout (() -> something param), 1000
जोएल मुलर

निकोलस एक अच्छी बात यह है कि खाली parens भी वैकल्पिक हैं।
जोएल मुलर


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.