javascript 在 async.map 期间删除项目

标签 javascript node.js asynchronous callback node-async

我正在使用 async.map 迭代数组并在每个项目上执行一些异步函数。在某些情况下,我需要从原始数组中删除该项目,我想知道这是否可能,我尝试使用两个空参数调用回调,

cb(null,null)

但这不起作用。我试着环顾四周,但找不到任何关于这个具体案例的信息。有没有办法实现这个目标?谢谢。

编辑:短代码片段

async.map(page['canvasData']['objects'], function (elem, cb) {
    if (elem['type'] == "picturebox") {
        //async opeartions
        cb(null, elem);
    } else cb(null, null);
}

最佳答案

如果确定是否可以同步删除元素(如您的示例中所示),则可以在调用 async.map 之前使用常规 Array#filter >:

var filteredObjects = page.canvasData.objects.filter(function () {
    return elem.type === "picturebox";
});
// filteredObjects is a copy of page.canvasData.objects, with
// non-picturebox elements removed
async.map(filteredObjects, function (elem, cb) {
    // async operations...
        // more async operations...
            // more async operations...
                cb(null, elem);

}, function (err, result) {
    if (err) { ... }
    else {
        console.log("Result: " + result);
    }
});

关于javascript 在 async.map 期间删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497874/

相关文章:

javascript - 在 for 循环 VueJS 中同步 API 调用

c# - 异步/等待 - 等待未按预期举行

java - 异步扩展 Java SWT 树

Javascript - 编辑行后刷新数据表的列顺序

javascript - 触发并绑定(bind)到自定义事件?

javascript - 响应中的 csv 数据在哪里?

node.js - 如何分离水线链接方法

javascript - 如何使用 sequelize 在一个数据库请求中将数据插入多个表?

javascript - 反复左右滑动div

node.js - 如何使用 Mandrill 将 csv 文件附加到电子邮件?