当前位置: 首页 > 面试题库 >

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

万高轩
2023-03-14
问题内容

那就是我的做法:

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");
});

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


问题答案:

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

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

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

eachSeries(arr,迭代器,回调)

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



 类似资料:
  • 问题内容: 从Python 2.6的迭代器中获取最后一项的最佳方法是什么?例如说 从中获取最短代码/最干净的方法是什么? 我可以这样做,但是效率似乎不高: 问题答案:

  • 问题内容: 我目前正在使用Express(Node.js)构建的应用程序,我想知道在不同环境(开发,生产)下处理不同robots.txt的最聪明方法是什么。 这是我现在所拥有的,但是我对解决方案不满意,我认为它很脏: (注意:这是CoffeeScript) 应该有更好的方法。你会怎么做? 谢谢。 问题答案: 使用中间件功能。这样,robots.txt将在任何会话,cookieParser等之前进行

  • 我正试图找到一种干净的方法来复制中的所有元素,但是要基于它的索引。 在JavaScript中,我们可以根据值进行过滤,但也可以根据索引进行过滤。所以我想要达到的目标是这样的: 到目前为止,我能做Java最好的就是这个,它又长又冗长。更不用说我不能使用本身,因为它还不是最终版本,否则我会得到 lambda表达式中使用的变量应该是final或final 当然有更好的方法在Java中实现这一点吗?

  • 我和我的同事面临一个问题。我们有几个SQL查询作为字符串。下面是一个例子: 目前,我们将它们作为字符串从查询类中的方法返回。我们希望重构代码,使其干净,因为我们有一个方法有3个以上的参数,这是很难使用的任何方式。 你会怎么做?组织需要大量参数的SQL查询的最干净的方法是什么?我非常感谢任何可能改善我们代码当前状态的答案。 谢谢

  • 问题内容: 。 我需要从作为组件状态的数组中删除一个元素。这意味着它是一个不变的对象。 使用传播语法可以轻松添加元素。 删除有些棘手。我需要使用一个中间对象。 它使代码更加肮脏并且难以理解。 创建一个新数组从中删除元素是否更容易或更轻松? 问题答案: 您可以结合使用spread和Array#slice: 另一个选择是Array#filter:

  • 问题内容: 我想在字典中的所有键上映射一个函数。我希望可以执行以下操作,但是过滤器无法直接应用于字典。实现这一目标的最干净的方法是什么? 在此示例中,我尝试将每个值加1。但这对于示例来说是偶然的-主要目的是弄清楚如何将map()应用于字典。 问题答案: 迅捷4+ 好消息!Swift 4包含一种方法,该方法使用相同的键但值不同来构造字典的副本。它还包含一个重载函数,该重载函数返回a 和,并使用初始值