Angular.noopは何に使用されますか?


86

Angular.orgのドキュメントでもどこでも検索しようとしましたが、実装に関する詳細な説明が見つかりませんでした。誰かがそれを説明することができればそれは非常に役に立ちます。


それは何もしない空の関数です
doodeec 2014年

1
私はすでにそれだけ得ました。しかし、なぜ私たちはそれをこのように使うのですか?"成功=成功|| angular.noop;"
厳しい2014年

1
@lechariotdorの方が良い答えを持っているようです...このページへの訪問者がより迅速に最良の答えに誘導されるように、承認を移動することができます
sfletche 2016年

回答:


148

angle.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 2015

4
@ abyrne85 angular.noop(毎回新しい無名関数を宣言するのではなく)常に同じ空の関数を再利用するので、見た目が良く、使用することをお勧めします。のコードangular.noopnoop。という名前の空の関数であるため、パフォーマンス面では違いはありません。
tomaoq 2015

angle.noopを使用すると、angularオブジェクトとの強い結合が作成されます。必要に応じてインライン匿名関数を使用することをお勧めします。
ジョンスミス

どうもありがとう:)$ timeout(angular.noop)とは何ですか?
artgb 2017

27

コールバックを期待する関数を書くときに非常に役立つと思います。

例:

function myFunction(id, value, callback) {

    // some logic
    return callback(someData);
}

上記の関数は、3番目の引数を指定せずに呼び出されると、エラーを返します。 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 2016年

16

操作を行わない機能です。これは、次のような状況で役立ちます。

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

機能的なスタイルでコードを書くときに便利です


2
OK。了解、ありがとう。しかし、なぜ「(y || angle.noop)(x);」の代わりに「(y)(x)」を単純に実行できないのかというちょっとした質問ですか?この背後にある理由は何ですか?
厳しい2014年

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は失敗時にトリガーされますが、成功しても何も起こりません(提案されているとおり)。
厳しい2014年

5

*この回答は、uがAngularの初心者ではないことを前提としています

Angular.noopは空の関数であり、場合によってはプレースホルダーとして使用できます

例えば:

APIを複数回呼び出して1つのpromiseを返すq.allを使用していると想像してください。これらの呼び出しの一部が失敗したが、失敗しなかった呼び出しを処理する必要がある場合は、呼び出しをキャッチしたときにapi呼び出しへのコールバックとしてangularnoopを使用します。uがangularnoopを使用しない場合、1つの呼び出しが失敗すると、q.allはすべてを拒否します。

Q.all(somecall.catch(angular.noop)、anothercall).then(解決結果[0]および結果[1])

呼び出しが失敗した場合、Angularはそれを無視して別の呼び出しを実行します(ただし、最初に解決された結果に対してuは未定義のままです)

私が助けてくれることを願っています


1
あなたの答えが文法的にも形式的にも間違っているので、私は反対票を投じました。私はそれから信頼できる情報を実際に得ることができませんでした。
Edoardoo 2017

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

その最短の方法

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

コールバック変数が関数になることを考慮に入れる


これはエレガントです
Faiz Mohamed Haneef 2017

2

公式ドキュメントが必要な場合は、ここにリンクがあります。とても簡単です。また、リンクから現在のドキュメントを貼り付けました。


操作を行わない関数。この関数は、関数スタイルでコードを記述するときに役立ちます。

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


0

トリック:これを使用して、ng-click属性に3進数を追加することもできます。

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

私が知るまでは、ng-click = "variable && doSomething()" `を使用できます。


1
ng-click="(variable) ? doSomething() : true"また機能します
pwolaq 2018

ng-click = "(variable)?doSomething(): ''"も機能します
josephoun18年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.