Angular.noop用于什么?

Har*_*rsh 85 javascript angularjs

我甚至尝试在Angular.org文档中搜索它,但无法找到任何详细的实现说明.如果任何人可以解释它将是非常有帮助的.

tom*_*aoq 146

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);
Run Code Online (Sandbox Code Playgroud)

  • @ abyrne85使用`angular.noop`是更美观和更好的做法,因为你总是重复使用相同的空函数(而不是每次都声明一个新的匿名函数).性能方面没有区别,因为`angular.noop`的代码只是一个名为`noop`的空函数. (4认同)

Muh*_*eda 28

在编写需要回调的函数时,我发现它非常有用.

例:

function myFunction(id, value, callback) {

    // some logic
    return callback(someData);
}
Run Code Online (Sandbox Code Playgroud)

在没有指定第三个参数的情况下调用它时,上面的函数将返回错误. 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 或者你有一个单行:`typeof callback ==='function'&& callback();`.方式更优雅^^.不使用`angular.noop`. (4认同)

Rah*_*thi 16

它是一个不执行任何操作的函数.这在以下情况下很有用:

function foo(y) {
   var x= fn();
   (y|| angular.noop)(x);
 }
Run Code Online (Sandbox Code Playgroud)

在函数样式中编写代码时非常有用

  • @AngularHarsh: - 你可以写那个.可能这个例子将有所帮助: - `//对成功回调不做任何事情,因此用angular.noop()替换成功的callbck函数`$ scope.contacts = Contacts.query(angular.noop,function(response){Window .myresp = response; $ scope.displayError(response); console.log("bad boy,listContacts failed");}); (3认同)
  • 好.知道了谢谢.但只是一个小问题,为什么我们不能简单地做"(y)(x)"而不是"(y || angular.noop)(x);"?这背后的原因是什么? (2认同)

jos*_*oun 5

*这个答案假定你不是角度的初学者

Angular.noop是一个空函数,在某些情况下可以用作占位符

例如:

想象一下,你正在使用q.all,它会对api进行多次调用并返回一个promise.如果其中一些调用失败但你仍然需要处理那些没有失败的调用,那么当你捕获调用时,使用angular noop作为api调用的回调.如果你不使用角度noop,q.all将拒绝一次呼叫失败时的everthing.

Q.all(somecall.catch(angular.noop),anothercall).then(解析result [0]和result [1])

如果调用失败,Angular将忽略该调用并执行另一个调用(但是对于第一个解析结果,您仍将未定义)

我希望我帮助过