在带有回调的async.series内部实现递归函数

时间:2019-04-12 13:58:39

标签: javascript node.js recursion async.js

我陷入了一个递归函数中,该函数使用“ ExclusiveStartKey”及其内部async.series从dynamodb中获取数据。如何在async.series内部构造用于回调的代码

var finalArray =  []

function scanQuery(params, callback) {

    docClient.scan(params, (err, data) => {
        if (err) {
            callback(err);
        } else {
            if (typeof data.LastEvaluatedKey != "undefined") {
               params.ExclusiveStartKey = data.LastEvaluatedKey;
               scanQuery(params,() => {
                callback();
               })
            }
            else {

                finalArray.push(data.Items);

                callback(finalArray);
            }
        }
    })
}
   async.series(
    [
    function (callback) {
        var params = {
            TableName: "demo",
            ProjectionExpression: "#id, #name, #created_date",
            ExpressionAttributeNames: {
                "#id": "id",
                "#name": "name",
                "#created_date": "created_date"
            }
        };
        console.log("Scanning Cars table.");

        scanQuery(params, (err, response) => {
            if (err) callback(err)
            // console.log(response);
            callback(null,response)
        })


    },
    function (callback) {
        // do some more stuff ...
        callback(null, 'tree');
    }
],
// optional callback
function (err, results) {
    console.log(err);
    if (!err) {
        // console.log(results);
        // console.log(finalArray);
        callback(results);
    } else {
        callback("test");
    }
});
}

在这里,我想通过dynamoDb一次调用获得所有结果。 FinalArray应该最后包含所有条目。那么如何通过与async.series集成的回调来修改scanQuery函数

0 个答案:

没有答案