Angular.noop किसके लिए प्रयोग किया जाता है?


86

मैंने इसे Angular.org प्रलेखन पर भी हर जगह खोजने की कोशिश की है, लेकिन कार्यान्वयन के साथ कोई विस्तृत विवरण नहीं मिल सका है। यदि कोई इसे समझा सकता है तो यह बेहद मददगार होगा।


यह सिर्फ एक खाली कार्य है जो कुछ भी नहीं करता है
डोडेक

1
इतना मुझे पहले ही मिल गया था। लेकिन हम इसे इस तरह क्यों इस्तेमाल करते हैं? "सक्सेस = सक्सेस || angular.noop?"
हर्ष

1
ऐसा लगता है कि @lechariotdor को बेहतर उत्तर मिल गया है ... आप अपनी स्वीकृति को आगे बढ़ा सकते हैं, इसलिए इस पृष्ठ पर आने वाले लोगों को सबसे अच्छा उत्तर देने का निर्देश है
sfletche

जवाबों:


148

angular.noop एक खाली फ़ंक्शन है जिसका उपयोग प्लेसहोल्डर के रूप में किया जा सकता है जब आपको किसी फ़ंक्शन को एक पैराम के रूप में पारित करने की आवश्यकता होती है।

function foo (callback) {
    // Do a lot of complex things

    callback();
}

// Those two have the same effect, but the later is more elegant
foo(function() {});
foo(angular.noop);

1
noopकेवल फंक्शन को खाली छोड़ने के बजाय कॉल करने का क्या लाभ है ? सौंदर्यशास्त्र, प्रदर्शन या कुछ और?
abyrne85

4
@ abyrne85 यह अधिक सौंदर्यप्रद मनभावन और उपयोग करने के लिए एक अच्छा अभ्यास है angular.noopक्योंकि आप हमेशा एक ही खाली फ़ंक्शन का उपयोग करते हैं (हर बार एक नया अनाम फ़ंक्शन घोषित करने के बजाय)। प्रदर्शन के लिहाज से इससे कोई फर्क नहीं पड़ता क्योंकि कोड angular.noopसिर्फ नाम का एक खाली फंक्शन है noop
तोमुक

Angular.noop का उपयोग करने से कोणीय ऑब्जेक्ट के साथ एक मजबूत युग्मन बनता है। जब आवश्यक हो तो मैं इनलाइन अनाम फ़ंक्शन का उपयोग करना पसंद करता हूं।
जॉन स्मिथ

बहुत धन्यवाद :) क्या आप समझा सकते हैं कि $ टाइमआउट (कोणीय.नोप) क्या है?
artgb

27

मुझे यह बहुत उपयोगी लगता है जब एक फ़ंक्शन लिखते हैं जो कॉलबैक की अपेक्षा करता है।

उदाहरण:

function myFunction(id, value, callback) {

    // some logic
    return callback(someData);
}

उपरोक्त फ़ंक्शन एक त्रुटि लौटाएगा, जब इसे तीसरे तर्क को निर्दिष्ट किए बिना बुलाया जाता है। myFunction(1, 'a');

उदाहरण (उपयोग करना angular.noop):

function myFunction(id, value, callback) {

    var cb = callback || angular.noop; // if no `callback` provided, don't break :)
    // some logic
    return cb(someData);
}

4
या आप उस के लिए एक लाइनर है typeof callback === 'function' && callback();:। अधिक उत्तम दर्जे का ^ ^ angular.noopहालांकि उपयोग नहीं ।
फ्रीजिस्टिक्स

16

यह एक ऐसा फंक्शन है जो कोई भी ऑपरेशन नहीं करता है। यह इस तरह की स्थिति में उपयोगी है:

function foo(y) {
   var x= fn();
   (y|| angular.noop)(x);
 }

कार्यात्मक शैली में कोड लिखते समय यह उपयोगी है


2
ठीक। मिल गया धन्यवाद। लेकिन सिर्फ एक छोटी सी क्वेरी कि हम "(y) कोणीय (x) के बजाय" (y) (x) "क्यों नहीं कर सकते?" आखिर इसकी वजह क्या है?
हर्ष

3
@AngularHarsh: - आप ऐसा लिख ​​सकते हैं। हो सकता है कि यह उदाहरण मदद करेगा: - //do nothing on the success callback, hence replacing the success callbck function with angular.noop() $ गुंजाइश.contacts = Contacts.query (angular.noop, function (response) {Window.myresp = response; $ गुंजाइश.displayError (response); कंसोल.log ("बुरा लड़का, listContacts") विफल ");});
राहुल त्रिपाठी

मुझे लगता है कि मुझे अब मिल गया है। इसलिए हम यहां जो कर रहे हैं वह प्रदर्शित होता है। विफलता पर ट्रिगर किया जाता है लेकिन सफलता पर कुछ भी नहीं होता है (जैसा कि सुझाव दिया गया है)।
हर्ष

5

* यह उत्तर मानता है कि आप कोणीय में एक शुरुआत नहीं हैं

Angular.noop एक खाली फ़ंक्शन है जिसे कुछ मामलों में प्लेसहोल्डर के रूप में उपयोग किया जा सकता है

उदाहरण के लिए:

कल्पना कीजिए कि आप q.all का उपयोग कर रहे हैं जो एपी को कई कॉल करते हैं और एक वादा वापस करते हैं। यदि इनमें से कुछ कॉल विफल हो जाती हैं, लेकिन फिर भी उन लोगों को संभालने की आवश्यकता होती है जो असफल नहीं होते हैं, तो यू कॉल को कॉल करते समय आपी कॉल में कॉलबैक के रूप में कोणीय नोज का उपयोग करें। यदि आप कोणीय नोक का उपयोग नहीं करते हैं, तो एक कॉल विफल होने पर q.all कभी भी अस्वीकार नहीं करेगा।

Q.all (somecall.catch (angular.noop), एक और कॉल) .then (संकल्प परिणाम [0] और परिणाम [1])

यदि कोई कॉल विफल हो जाती है, तो कोणीय उस पर ध्यान नहीं देगा और दूसरा कॉल करेगा (लेकिन यू अभी भी पहले हल किए गए परिणाम के लिए अपरिभाषित होगा)

मुझे आशा है कि मैंने मदद की


1
मैंने अस्वीकार कर दिया क्योंकि आपका उत्तर इतना व्याकरणिक और औपचारिक रूप से गलत है कि मैं वास्तव में इससे कोई विश्वसनीय जानकारी प्राप्त नहीं कर सका।
एडोआर्डू

4
var result = (callback || angular.noop)(params)

इसका सबसे छोटा तरीका है

var result = typeof callback === 'function' && callback(params);

कॉलबैक संस्करण को ध्यान में रखते हुए एक फ़ंक्शन होगा


यह सुरुचिपूर्ण है
फैज मोहम्मद हनीफ

2

यदि आप चाहते हैं कि आधिकारिक दस्तावेज यहां लिंक है । यह बहुत सरल है। मैंने लिंक से वर्तमान दस्तावेज़ भी चिपकाए हैं।


एक फ़ंक्शन जो कोई संचालन नहीं करता है। कार्यात्मक शैली में कोड लिखते समय यह फ़ंक्शन उपयोगी हो सकता है।

function foo(callback) {
  var result = calculateResult();
  (callback || angular.noop)(result);
}


0

ट्रिक: आप इसका उपयोग एक ng-clickविशेषता में टर्नरी को जोड़ने के लिए भी कर सकते हैं :

ng-click="(variable) ? doSomething() : angular.noop()"

जब तक मुझे पता चला कि आप एनजी-क्लिक = "वैरिएबल && doSomething ()" `का उपयोग कर सकते हैं


1
ng-click="(variable) ? doSomething() : true"यह भी काम करेगा
pwolaq

ng-click = "(चर); doSomething (): ''" भी काम करेगा
joseph oun
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.