2015-07-06 9 views
9

मैं लूपबैक सीखने की कोशिश कर रहा हूं लेकिन मुझे वास्तव में समझ में नहीं आता कि फ़ंक्शन कॉल में 'cb' का अर्थ क्या है। मैंने यह In loopback documentation what does variable 'cb' stands for? पढ़ा है और मुझे नोडज में कॉलबैक की बुनियादी समझ है लेकिन मुझे लूपबैक में सीबी समझ में नहीं आता है। उदाहरण के लिए, http://docs.strongloop.com/display/public/LB/Remote+methodsलूपबैक में 'सीबी' का क्या अर्थ है?

module.exports = function(Person){ 

    Person.greet = function(msg, cb) { 
     cb(null, 'Greetings... ' + msg); 
    } 

    Person.remoteMethod(
     'greet', 
     { 
      accepts: {arg: 'msg', type: 'string'}, 
      returns: {arg: 'greeting', type: 'string'} 
     } 
    ); 
}; 

उस सीबी का क्या अर्थ है? हम कैसे जानते हैं कि यह दो पैरामीटर, शून्य और एक स्ट्रिंग स्वीकार करता है? उम्मीद है कि कोई मदद कर सकता है।

+0

calback समारोह की तरह है? – user3227295

+1

'cb' कॉलबैक के लिए खड़ा है, कुछ विशेष नहीं, केवल उपलब्ध नाम, किसी भी अन्य परिवर्तनीय नाम – mido

+1

द्वारा प्रतिस्थापित किया जा सकता है, यह केवल एक नोड शैली की चीज़ है, async में, कॉलबैक का पहला पैरामीटर सामान्य रूप से त्रुटि ऑब्जेक्ट को दोहराता है (यही तरीका है फेंक दें क्योंकि इसे सिंक्रनाइज़ नहीं किया जा सकता है) दूसरा, तीसरा ... nth पैरामीटर वे मान हैं जिन्हें आप एसिंक विधि से उम्मीद करते हैं ... – mido

उत्तर

9

तो तुम एक Async समारोह Person.greet जो आप इस तरह फोन करता हूँ है:

Person.greet('hello', function(err){ 
    ... 
}); 

सूचना है कि 'hello' के बाद एक दूसरा तर्क पारित किया गया था और यह वास्तव में एक समारोह है। यह भी एक नाम के साथ बाहर परिभाषित किया जा सकता और इस तरह से पारित कर दिया:

function callback(err){ 
    ... 
} 
Person.greet('hello', callback); 

अब यह वास्तव में लग रहा है कि कैसे Person.greet परिभाषित किया गया था:

Person.greet = function(msg, cb) { 
    cb(null, 'Greetings... ' + msg); 
} 

अंतर यहाँ सिर्फ इतना है कि परिभाषा यह एक का उपयोग करता है अलग नाम: cb। यह किसी भी नाम का उपयोग कर सकता है क्योंकि cb सिर्फ एक तर्क है। लेकिन आम तौर पर "सीबी", "किया", या "अगला" मानक अभ्यास के रूप में उपयोग किया जाता है।

+0

ठीक है। मुझे वास्तव में पता है कि कॉलबैक क्या है। मुख्य समस्या जो मुझे भ्रमित करती है वह है जहां वे कॉलबैक को परिभाषित करते हैं। कोई बात नहीं धन्यवाद। –

+0

@KenKwok वे इसे परिभाषित नहीं करते हैं, आप करते हैं। आप फ़ंक्शन इनलाइन को पास करते हैं जिसे वे नामित तर्क 'cb' के रूप में लेते हैं ताकि वे इसे – laggingreflex

+0

पर कॉल कर सकें लेकिन ऐसा लगता है कि लूपबैक इस तरह से काम नहीं करता है ... –

0

मैं अभी भी एक ही प्रश्न में आया हूं, और निराशा के कुछ घंटों के बाद मुझे आधिकारिक उत्तर मिला है।

https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Howtodefinearemotemethod

विकल्प स्वीकार करता है:

को परिभाषित करता है तर्क है कि दूरस्थ विधि स्वीकार करता है। ये तर्क आपके द्वारा परिभाषित स्थिर विधि के लिए मानचित्र करें। ऊपर के उदाहरण के लिए, आप देख सकते हैं समारोह हस्ताक्षर: Person.greet (नाम, आयु, कॉलबैक) ... name पहला तर्क है, age दूसरा तर्क है और कॉलबैक स्वचालित रूप से लूपबैक द्वारा प्रदान की है (नहीं है इसे अपने accepts सरणी में निर्दिष्ट करें)। अधिक जानकारी के लिए, तर्क विवरण देखें। डिफ़ॉल्ट अगर प्रदान नहीं किया गया खाली सरणी है, []।

3

उत्तर देखकर, मुझे लगता है कि केवल दो प्रश्नों में से केवल 1 का उत्तर दिया गया था।


प्रश्न 1: उस सीबी का क्या अर्थ है?

यह उत्तर दिया गया है कि यह कॉलबैक फ़ंक्शन के लिए एक छोटा सा है।


प्रश्न 2: हम कैसे जानते हैं कि यह दो पैरामीटर, शून्य और एक स्ट्रिंग स्वीकार करता है?

अपने दूरस्थ विधि की वापसी विकल्प जो निम्नलिखित docs के अनुसार करता है में इस परिभाषित:

का वर्णन दूरस्थ विधि के कॉलबैक तर्क; तर्क विवरण देखें। गलती तर्क माना जाता है; निर्दिष्ट नहीं करते।

हम आपके उदाहरण पर नजर तो अगर

Person.remoteMethod(
    'greet', 
    { 
     accepts: {arg: 'msg', type: 'string'}, 
     returns: {arg: 'greeting', type: 'string'} 
    } 
); 

आप यहाँ परिभाषित कॉलबैक पैरामीटर हो जाएगा कि

callback(err, greeting: string)

चलें डॉक्स से एक और उदाहरण है:

MyModel.remoteMethod('download', { 
     isStatic: true, 
     returns: [ 
      { arg: 'body', type: 'file', root: true }, 
      { arg: 'Content-Type', type: 'string', http: { target: 'header' } }, 
     ], 
    }); 

इस उदाहरण के लिए कॉलबैक किया जाएगा

callback(err, body: file, Content-Type: string)

और उपयोग इस

cb(null, stream, 'application/octet-stream');

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