如题,angular.forEach怎么做可以跳出循环?
先来回答你的问题:
forEach是不能跳出循环的。
forEach
在绝大多数编程语言中,foreach不仅仅是语法糖,通过编译优化它可以提供更好的性能,比如直接略去边界检查。为了能更好地做到这些优化,foreach在设计上也给出了制约。例如在C#中,迭代过程不允许更改容器本身(增删元素),不允许break(我们知道,所有的条件语句都会降低指令缓存和流水线的性能)。
foreach
Angular包装了一系列的原生JS方法,为的是能够更好地监听模型变化。这些JS方法的使用方式和原来基本没有区别。你说的forEach就是一个,还有$timeout等等。关于Angular的数据绑定方式可以看这个:http://harttle.com/2015/06/06/angular-data-binding-and-digest.html
$timeout
http://stackoverflow.com/a/13844508/2586541
var keepGoing = true; angular.forEach([0,1,2], function(count){ if(keepGoing) { if(count == 1){ keepGoing = false; } } });
Js原生的forEach和jquery的each是这样的,return true,中断后面的操作,继续遍历到下一个操作,类似continue;return false,结束整个遍历,类似break Angular不太清楚,楼主可以试试,这种语法糖应该都差不多的。
@harttle 那循环的数据太大的时候,不是很影响性能。
先来回答你的问题:
forEach
是不能跳出循环的。在绝大多数编程语言中,
foreach
不仅仅是语法糖,通过编译优化它可以提供更好的性能,比如直接略去边界检查。为了能更好地做到这些优化,foreach
在设计上也给出了制约。例如在C#中,迭代过程不允许更改容器本身(增删元素),不允许break(我们知道,所有的条件语句都会降低指令缓存和流水线的性能)。Angular包装了一系列的原生JS方法,为的是能够更好地监听模型变化。这些JS方法的使用方式和原来基本没有区别。你说的
forEach
就是一个,还有$timeout
等等。关于Angular的数据绑定方式可以看这个:http://harttle.com/2015/06/06/angular-data-binding-and-digest.htmlhttp://stackoverflow.com/a/13844508/2586541
Js原生的forEach和jquery的each是这样的,return true,中断后面的操作,继续遍历到下一个操作,类似continue;return false,结束整个遍历,类似break
Angular不太清楚,楼主可以试试,这种语法糖应该都差不多的。
@harttle 那循环的数据太大的时候,不是很影响性能。