Angular.noop은 무엇에 사용됩니까?


86

Angular.org 문서 에서도 모든 곳에서 검색을 시도했지만 구현에 대한 자세한 설명을 찾을 수 없습니다. 설명 할 수 있다면 큰 도움이 될 것입니다.


그것은 아무것도하지 않는 단지 비어있는 기능입니다
doodeec

1
벌써 얻은만큼. 그런데 왜 이렇게 사용합니까? "성공 = 성공 || angular.noop;"
Harsh

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.
tomaoq

angular.noop를 사용하면 각도 객체와 강력한 결합이 생성됩니다. 필자는 필요할 때 인라인 익명 함수를 사용하는 것을 선호합니다.
John Smith

감사합니다 :) $ timeout (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그래도 사용하지 않습니다 .
Freezystem

16

아무 작업도 수행하지 않는 기능입니다. 이것은 다음과 같은 상황에서 유용합니다.

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

기능적인 스타일로 코드를 작성할 때 유용합니다.


2
확인. 감사합니다. 그러나 "(y || angular.noop) (x);"대신에 "(y) (x)"를 수행 할 수없는 이유에 대한 간단한 질문이 있습니까? 그 이유는 무엇입니까?
Harsh

3
@AngularHarsh :-당신은 그것을 쓸 수 있습니다. 이 예제가 도움이 될 수 있습니다 .- //do nothing on the success callback, hence replacing the success callbck function with angular.noop() $ scope.contacts = Contacts.query (angular.noop, function (response) {Window.myresp = response; $ scope.displayError (response); console.log ( "bad boy, listContacts failed ");});
Rahul Tripathi 2014 년

지금 얻은 것 같아요. 그래서 여기서 우리가하는 일은 displayError가 실패시 트리거되지만 성공시 아무 일도 일어나지 않는 것입니다 (제안대로).
Harsh

5

*이 답변은 u가 각도의 초보자가 아니라고 가정합니다.

Angular.noop는 경우에 따라 자리 표시 자로 사용할 수있는 빈 함수입니다.

예를 들면 :

api를 여러 번 호출하고 하나의 promise를 반환하는 q.all을 사용하고 있다고 가정 해보십시오. 이러한 호출 중 일부가 실패하지만 실패하지 않은 호출을 처리해야하는 경우 호출을 잡을 때 angular noop을 api 호출에 대한 콜백으로 사용하십시오. angular noop을 사용하지 않으면 q.all은 한 번의 호출이 실패하면 모든 것을 거부합니다.

Q.all (somecall.catch (angular.noop), anothercall) .then (resolve result [0] 및 result [1])

호출이 실패하면 Angular는이를 무시하고 다른 호출을 수행합니다 (그러나 u는 여전히 첫 번째 해결 된 결과에 대해 정의되지 않습니다)

내가 도왔 으면 좋겠어


1
귀하의 답변이 너무 문법적이고 공식적으로 잘못되어 실제로 신뢰할 수있는 정보를 얻을 수 없었기 때문에 투표했습니다.
Edoardoo


2

공식 문서를 원하시면 여기에 링크가 있습니다. 매우 간단합니다. 링크에서 현재 문서를 붙여 넣었습니다.


작업을 수행하지 않는 기능입니다. 이 함수는 함수 스타일로 코드를 작성할 때 유용 할 수 있습니다.

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


0

트릭 : ng-click속성에 삼항을 추가하는 데 사용할 수도 있습니다 .

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

내가 ng-click = "variable && doSomething ()"`을 사용할 수 있다는 것을 알기 전까지


1
ng-click="(variable) ? doSomething() : true"또한 작동합니다
pwolaq

NG 클릭 = "(변수) 해봐요 () : ''?"것 또한 일
어은동 조셉
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.