Próbowałem przeszukać go wszędzie, nawet w dokumentacji Angular.org, ale nie mogłem znaleźć żadnego szczegółowego wyjaśnienia dotyczącego implementacji. Byłoby niezwykle pomocne, gdyby ktoś mógł to wyjaśnić.
javascript
angularjs
Szorstki
źródło
źródło
Odpowiedzi:
angular.noop to pusta funkcja, której można użyć jako symbolu zastępczego, gdy trzeba przekazać jakąś funkcję jako parametr.
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);
źródło
noop
zamiast pozostawienia pustej funkcji? Estetyka, wykonanie czy coś innego?angular.noop
ponieważ zawsze używasz ponownie tej samej pustej funkcji (zamiast deklarować za każdym razem nową funkcję anonimową). Pod względem wydajności nie ma to znaczenia, ponieważ kod dlaangular.noop
jest po prostu pustą funkcją o nazwienoop
.Uważam, że jest to niezwykle pomocne podczas pisania funkcji, która oczekuje wywołania zwrotnego.
Przykład:
function myFunction(id, value, callback) { // some logic return callback(someData); }
Powyższa funkcja zwróci błąd, jeśli zostanie wywołana bez podania trzeciego argumentu.
myFunction(1, 'a');
Przykład (użycie
angular.noop
):function myFunction(id, value, callback) { var cb = callback || angular.noop; // if no `callback` provided, don't break :) // some logic return cb(someData); }
źródło
typeof callback === 'function' && callback();
. O wiele bardziej elegancki ^^. Nie używamangular.noop
jednak.Jest to funkcja, która nie wykonuje żadnych operacji. Jest to przydatne w takiej sytuacji:
function foo(y) { var x= fn(); (y|| angular.noop)(x); }
Przydaje się przy pisaniu kodu w stylu funkcjonalnym
źródło
//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 ("zły chłopak, listContacts failed ");});* ta odpowiedź zakłada, że nie jesteś początkującym w kątowym
Angular.noop to pusta funkcja, której w niektórych przypadkach można używać jako symbolu zastępczego
na przykład:
Wyobraź sobie, że używasz q.all, który wykonuje wiele wywołań interfejsu API i zwraca jedną obietnicę. Jeśli niektóre z tych wywołań zawodzą, ale nadal musisz obsłużyć te, które się nie powiodły, użyj angular noop jako wywołania zwrotnego do wywołań interfejsu API, gdy przechwytujesz wywołania. Jeśli nie używasz angular noop, q.all odrzuci wszystko, jeśli jedno połączenie się nie powiedzie.
Q.all (somecall.catch (angular.noop), anothercall). Then (rozwiązać wynik [0] i wynik [1])
Jeśli połączenie się nie powiedzie, Angular zignoruje to i wykona kolejne wywołanie (ale nadal będzie niezdefiniowane dla pierwszego rozstrzygniętego wyniku)
Mam nadzieję, że pomogłem
źródło
var result = (callback || angular.noop)(params)
To najkrótszy sposób
var result = typeof callback === 'function' && callback(params);
Biorąc pod uwagę, że callback var będzie funkcją
źródło
Jeśli chcesz oficjalną dokumentację tutaj, to link . To całkiem proste. Wklejałem też aktualną dokumentację z linku.
Funkcja, która nie wykonuje żadnych operacji. Ta funkcja może być przydatna podczas pisania kodu w stylu funkcjonalnym.
function foo(callback) { var result = calculateResult(); (callback || angular.noop)(result); }
źródło
Sztuczka: możesz jej również użyć, aby dodać trójskładnik do
ng-click
atrybutu:ng-click="(variable) ? doSomething() : angular.noop()"
Dopóki się nie dowiedziałem, możesz użyć ng-click = "variable && doSomething ()" `
źródło
ng-click="(variable) ? doSomething() : true"
zadziała również