2011-06-23 12 views
195

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

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

मैंने सवाल उठाया, यह नहीं कि यह वही था जो मैं खोज रहा था लेकिन उत्तर मुझे सही दिशा में ले जाते हैं। – MikeScott8

+1

यह एक अच्छा सवाल है; यह उन कुछ लोगों में से एक है जो मुझे कॉफ़ीस्क्रिप्ट की सीमाओं की खोज करने में मदद कर रहे हैं (जैसा कि अब है)। – thure

+0

हम इस – Atul

उत्तर

205

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

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

delay 1000, -> something param 

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

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

callback = -> something param 
setTimeout callback, 1000 
+0

बढ़िया जब तक आपको नेस्टेड कॉलबैक की आवश्यकता नहीं होती –

+0

अच्छा जवाब !!!! –

44

यह एक बराबर अनुवाद (धन्यवाद @Joel मुलर) में परिणाम होगा:

setTimeout (-> something param), 1000 

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

+1

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

+0

@ जोएल म्यूएलर: धन्यवाद, मैंने अपना जवाब अपडेट कर लिया है। – maerics

+0

निकोलस एक अच्छा मुद्दा बनाता है कि खाली माता-पिता भी वैकल्पिक हैं। –

174
setTimeout (-> 
    something param 
), 1000 

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

+0

धन्यवाद। कॉफ़ीस्क्रिप्ट कभी-कभी मुझे खराब कर देता है क्योंकि यह कोड इतना साफ है। – tomodian

+0

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

+20

यह साफ नहीं है अगर यह आपको खराब कर देता है, बस कहें :) – Kevin

60
setTimeout -> 
    something param 
, 1000 
+0

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

+0

भी नामित फ़ंक्शन के लिए, setTimeout नाम Func, 5000 –

+0

ध्यान दें कि व्हाइटस्पेस महत्वपूर्ण है। कॉल बिल्कुल ऊपर की तरह दूरी पर होना चाहिए। यदि 'सेटमेटआउट' जैसी ही पंक्ति पर 'कुछ पैरामीटर' है, तो इसे अलग-अलग पार्स किया जाता है। – henrebotha

3

एक और विकल्प:

setTimeout(
    -> something param 
    1000 
) 
12

मैं इस सबसे अच्छा तरीका मिल जाए, ऐसा ही करने

setTimeout (-> alert "hi"), 1000 
+0

मुझे यह इनलाइन स्क्रिप्ट पसंद है –

संबंधित मुद्दे