1

私は async.map を使用して配列を反復処理し、各項目でいくつかの非同期関数を実行しています。場合によっては、元の配列からアイテムを削除する必要があります.これが可能かどうか疑問に思っていました.2つのnullパラメータでコールバックを呼び出してみました.

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 に答える