gpt4 book ai didi

javascript - 回调函数中的递归

转载 作者:行者123 更新时间:2023-12-03 11:18:37 25 4
gpt4 key购买 nike

我有一个带有回调的函数,其中我使用 dynamoDB 的“listTables”方法,该方法仅返回 100 个表名称,如果还有更多表,它会返回另一个名为“LastEvaluatedTableName”的字段,我们可以在新的表中使用该字段在 listTables 中查询以从提到的“LastEvaluatedTableName”查询另外 100 个表;我怎样才能在这个逻辑中的 javascript 回调中进行递归?

我尝试了以下不正确的方法:

module.exports.ListTables = function (start, callback) {
var params;
if (start) {
params = {
"ExclusiveStartTableName": start
};
}

dynamodb.listTables(params, function (err, data) {
var totalData = [];
totalData.push(data);
if (data.LastEvaluatedTableName) {
data = module.exports.ListTables(data.LastEvaluatedTableName);
}
callback(err, totalData);

});
}

如果您需要更多说明,请告诉我!

谢谢!

最佳答案

您需要连接数据,而不是每次都替换它:

dynamodb.listTables(params, function (err, data) {
if (data.LastEvaluatedTableName) {
data.concat(module.exports.ListTables(data.LastEvaluatedTableName));
}
callback(err, data);
});
<小时/>

更新

根据评论中的信息,听起来您需要这样的东西:

module.exports.ListTables = function (start, callback, totalData) {
var params;
if (start) {
params = {
"ExclusiveStartTableName": start
};
}

if (!totalData) {
totalData = [];
}

dynamodb.listTables(params, function (err, data) {
totalData = totalData.concat(data.TableNames);
if (data.LastEvaluatedTableName) {
module.exports.ListTables(data.LastEvaluatedTableName, callback, totalData);
}
else {
callback(err, totalData);
}
});
}

关于javascript - 回调函数中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com