84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如题,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 那循环的数据太大的时候,不是很影响性能。