一尘不染

在数组(或objs)上迭代异步的最聪明/最干净的方法是什么?

node.js

那就是我的做法:

function processArray(array, index, callback) {
    processItem(array[index], function(){
        if(++index === array.length) {
            callback();
            return;
        }
        processArray(array, index, callback);
    });
};

function processItem(item, callback) {
    // do some ajax (browser) or request (node) stuff here

    // when done
    callback();
}

var arr = ["url1", "url2", "url3"];

processArray(arr, 0, function(){
    console.log("done");
});

有什么好处吗?如何避免那些意粉般的代码?


阅读 251

收藏
2020-07-07

共1个答案

一尘不染

检出异步库,它用于控制流(异步内容),并且它有很多用于数组内容的方法:每种方法,过滤器,映射。查看github上的文档。这可能是您需要的:

每个(arr,迭代器,回调)

将迭代器函数并行应用于数组中的每个项目。调用迭代器时,将使用列表中的项目以及完成时的回调。如果迭代器将错误传递给此回调,则该each函数的主回调将立即被错误调用。

eachSeries(arr,迭代器,回调)

each仅将迭代器应用于序列中数组的每个项目相同。仅当当前迭代器完成处理后,才调用下一个迭代器。这意味着迭代器功能将按顺序完成。

2020-07-07