1

我正在使用 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);
}
4

1 回答 1

1

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

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);
    }
});
于 2015-02-13T13:11:47.837 回答