2012-09-05 14 views
10

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

मैं इस तरह कुछ करने के लिए सक्षम होना चाहते हैं:

book.save (err) -> 
    MyFunc param1, param2, (callbackParam) -> 
    # some code using callbackParam 

MyFunc = (param1, param2) -> 
    # some other code that defines callbackParam 
    ?.call(callbackParam) 

क्या कहा जा चुका है और यह डेटा कैसे प्राप्त करता है?

MyFunc param1, param2, some_function 

तो यह इस तरह दिखना चाहिए:

उत्तर

17

आप MyFunc कॉल करने के लिए के रूप में चाहते हैं

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback? callbackParam 

:

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback callbackParam 

और तुम callback वैकल्पिक बनाना चाहते हैं तो और यदि आप एक विशिष्ट @ (AKA) की आपूर्ति करना चाहते हैं), तो आप सिर्फ जावास्क्रिप्ट में तरह call या apply का उपयोग करेंगे:

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback?.call your_this_object, callbackParam 

(callbackParam) -> ... सामान सिर्फ एक समारोह शाब्दिक, वहाँ कोई विशेष रूबी में की तरह से निपटने के ब्लॉक है कि किसी भी अन्य पैरामीटर की तरह काम करती है (अपने टैग का सुझाव रूबी ब्लॉक आपके भ्रम का स्रोत हैं)।

+0

धन्यवाद! यह आसान था। – zishe

4

यहाँ पढ़ सकते हैं और उदाहरण को समझने के लिए एक क्लीनर, है आसान:

some_function = (callback) -> 
    param1 = "This is param1" 
    param2 = "This is param2" 
    callback(param1, param2) 

callback = (param1, param2) -> 
    console.log(param1) 
    console.log(param2) 

@tester = -> 
    some_function(callback) 
    "done" 

अब आपकी वेबसाइट को लोड, कंसोल पर जाएँ, और फ़ंक्शन को कॉल करें:

> tester() 
    This is param1 
    This is param2 
< "done" 
संबंधित मुद्दे