【发布时间】:2023-03-28 10:22:01
【问题描述】:
我正在尝试递归调用 AWS 的 SNS listEndpointsByPlatformApplication。这将返回前 100 个端点,然后返回 NextToken 中的令牌(如果还有更多要返回)(详细信息:AWS SNS listEndpointsByPlatformApplication)。
这是我尝试过的:
var getEndpoints = function(platformARN, token) {
return new models.sequelize.Promise(function(resolve, reject) {
var params = {
PlatformApplicationArn: platformARNDev
};
if (token != null) {
params['NextToken'] = token;
}
sns.listEndpointsByPlatformApplication(params, function(err, data) {
if (err) {
return reject(err);
}
else {
endpoints = endpoints.concat(data.Endpoints); //save to global var
if ('NextToken' in data) {
//call recursively
return getEndpoints(platformARN, data.NextToken);
}
else {
console.log('trying to break out!');
return resolve(true);
}
}
});
});
}
我是这样称呼它的:
getEndpoints(platformARNDev, null)
.then(function(ret) {
console.log('HERE!');
}, function(err) {
console.log(err);
});
问题是:第一次调用发生,然后递归调用发生,我收到消息trying to break out!,但HERE! 永远不会被调用。我认为我的承诺的回报方式有问题。
感谢指点。
【问题讨论】:
标签: javascript amazon-web-services recursion promise