【问题标题】:stop an if statement javascript AngularJS停止 if 语句 javascript AngularJS
【发布时间】:2014-07-01 04:42:40
【问题描述】:

我有一个 if 语句,但如果满足第一个条件但在我完成一些流程之后需要它来“中断”。 if 语句被包裹在 Angular 的 forEach 语句中。

angular.forEach($scope.obj, function ( value, key) {
  if( id == key) {
    delete $scope.obj[id];
    result.clicked = false;
    //break here, don't run the else
  } else {
    $scope.obj[id] = result;
    result.clicked = true;
  }
})

【问题讨论】:

  • 只需returnbreak
  • 我会把它们放在哪里?你可以说得更详细点吗?我尝试返回评论所在的位置,但没有做任何事情,因为循环一直在运行
  • 没有简单的方法可以摆脱angular.foreach,原因在here 中有解释。您可以尝试类似How to short circuit Array.forEach like calling break?的顶级答案中解释的内容

标签: javascript angularjs if-statement foreach


【解决方案1】:

没有办法做到这一点,Angular forEach 循环不能在条件匹配时中断。 使用原生 FOR 循环而不是angular.forEach,因为for 将允许您在两者之间使用break

【讨论】:

  • 谢谢!我使用了普通的for (var key in $scope.obj){} 并且能够中断 if 语句。
  • 就是这样!解决了... :)
【解决方案2】:

Angular 文档没有说明停止 forEach,它似乎无法停止。 也许你应该使用Array.prototype.every 之类的东西。 另一方面,也许你可以阻止它抛出错误......但这似乎是一种肮脏的方式。

【讨论】:

  • Array.prototype.some 也可以。
  • 是的,或多或少有一个与另一个相反:一个在返回 true 时工作,另一个在 false 时工作
【解决方案3】:

由于 Angular.forEach 是异步的,你不能中断,因为没有循环。如果你使用普通循环,你可以照常中断。

【讨论】:

  • angular.forEach 不是异步的
  • 糟糕,事实并非如此。但是在 anulars 实现中没有中断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
  • 2012-09-21
  • 1970-01-01
  • 2015-09-07
  • 2013-12-31
  • 2011-08-25
相关资源
最近更新 更多