gpt4 book ai didi

javascript - Node JS 应用程序卡在resolve() 处

转载 作者:行者123 更新时间:2023-12-01 01:54:28 27 4
gpt4 key购买 nike

在列出 aws cognito 用户时,我的 Node js 应用程序遇到问题。

仅当我有超过 60 个 Cognito 用户时才会出现此问题。

Reference of API

下面是我的代码片段。

function isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList) {
return new Promise(function(resolve, reject) {
cognitoidentityserviceprovider.listUsers(params, function(err, data) {
if (err) {
logger.log("ERROR", "Error while calling listUsers API : " + err);
reject({ code: 404, msg : err.message});
} else {
data.Users.forEach(function(user) {
if (isUserASystemAdmin(user)) {
adminUserList.users.push(user);
}
});
if (data.PaginationToken != undefined) {
params.PaginationToken = data.PaginationToken;
isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList);
} else {
// We've reached the end
let totalCognitoAdminUsers = 0;
let totalCognitoAdminUsersToDelete = 0;

adminUserList.users.forEach(function(adminUser) {
if (isCognitoUser(adminUser)) {
totalCognitoAdminUsers++;
if (listUsers.indexOf(adminUser.Username) > -1) {
totalCognitoAdminUsersToDelete++;
}
}
});

if(totalCognitoAdminUsers != 0 && (totalCognitoAdminUsers == totalCognitoAdminUsersToDelete)) {
reject({ code: 404, msg : "Cannot alter last Admin User controlled by standard authentication"});
} else {
console.log("Return Success");
resolve();
}
}
}
});
});
};

当我的用户数少于 60 时,此功能工作正常,但根据 AWS Docs我们一次只能读取 60 个用户,在这种情况下,我将在参数中发送 paginationtoken

我的代码在 resolve() 行时卡住了。

如果我删除下面的代码,它就会起作用。

 if (data.PaginationToken != undefined) {
params.PaginationToken = data.PaginationToken;
isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList);
}

有什么帮助吗?

如果需要任何进一步的信息,请告诉我。

最佳答案

如果上述 if 语句为 true,则您将递归函数:isAllowedToDeleteOrRevokeUsers(…)

您不应在 Promise 内进行递归调用,而应解析每个页面的 Promise 并为分页的每个新页面重新执行它。

换句话说:确保 Promise 内逻辑中的每个路径都会导致 resolve()reject() 调用。如果您的应用程序逻辑需要递归,请重新构造该函数,以便在每次递归时创建并解析一个新的 Promise。

关于javascript - Node JS 应用程序卡在resolve() 处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151222/

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