我正在使用 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/