map和foreach遍历是否有序以及能否终止

1,089 阅读1分钟

我们都知道map和foreach在遍历过程中是无法返回或者终止的,这与其内部实现有关。拿map来说,map方法接收两个参数,第一个是回调函数,另一个是arg参数,当参数中没有回调函数时,map会报错。

但也不是说一定不能在map遍历中实现终止,只是需要借助外界才能达到终止效果。可以借助try catch和throw new error()实现。

那map和foreach不实现终止的背后有着哪些我们不知道的内容呢?

大家在项目中或许会遇到一种情况,当用foreach去在操作异步请求时,依次返回来的数据顺序并不是按照我们所期望的顺序排列,而用经典的for请求却能够得到有序的顺序。实际上这意味着foreach和map内部实现是异步操作,而经典for操纵是同步的,同步的函数是可以终止的,但是异步函数终止是没那么简单的。所以在这个层面上更能够深入理解为何map和foreach的内部实现不能够实现终止。

可能理解有些许偏差,大佬看到的话发现有问题希望指出,不胜感激~