如何遍历数组对象

2025-11-24 17:28:55

1、在遍历数组时,使用某个函数依次对数据成员做一些处理也是常见的需求。如果函数是同步执行的,一般就会写出以下代码:var len = arr.length,    i = 0;for (; i < len; ++i) {    arr[i] = sync(arr[i]);}// All array items have processed.

如何遍历数组对象

2、如果函数是异步执行的,以上代码就无法保证循环结束后所有数组成员都处理完毕了。如果数组成员必须一个接一个串行处理,则一般按照以下方式编写异步代码:

如何遍历数组对象

3、 (function next(i, len, callback) {    if (i < len) {        async(arr[i], function (value) {            arr[i] = value;            next(i + 1, len, callback);        });    } else {        callback();    } }(0, arr.length, function () {    // All array items have processed. }));

如何遍历数组对象

4、可以看到,以上代码在异步函数执行一次并返回执行结果后才传入下一个数组成员并开始下一轮执行,直到所有数组成员处理完毕后,通过回调的方式触发后续代码的执行。

如何遍历数组对象

5、如果数组成员可以并行处理,但后续代码仍然需要所有数组成员处理完毕后才能执行的话,则异步代码会调整成以下形式:(function (i, len, count, callback) {    for (; i < len; ++i) {        (function (i) {            async(arr[i], function (value) {                arr[i] = value;                if (++count === len) {                    callback();                }            });        }(i));    }}(0, arr.length, 0, function () {    // All array items have processed.}));

如何遍历数组对象

如何遍历数组对象

6、可以看到,与异步串行遍历的版本相比,以上代码并行处理所有数组成员,并通过计数器变量来判断什么时候所有数组成员都处理完毕了。

如何遍历数组对象

如何遍历数组对象

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢