gpt4 book ai didi

JavaScript:顺序迭代 Promise 函数

转载 作者:行者123 更新时间:2023-11-28 04:08:58 25 4
gpt4 key购买 nike

这是场景:使用 AWS Kinesis >要从 Kinesis 获取记录,我需要一个分片迭代器 >Kinesis 不会返回新的分片迭代器,直到请求已完成 >对“getRecords”的调用是异步的 >尝试迭代此过程失败,因为在需要分片迭代器之前请求尚未解决

const getRecordsInShard = (shard, batchSize, streamName) => {
const records = [];
const loop = (response) => {
if (_.isEmpty(response.NextShardIterator)) {
return Promise.resolve(records);
}
records.push(response.Records);
return getRecordsByShardIterator(response.NextShardIterator, batchSize).then(loop);
};

return getStreamIterator(shard.ShardId, shard.SequenceNumberRange.StartingSequenceNumber, (streamName || process.env.KINESIS_STREAM))
.then(response => getRecordsByShardIterator(response.ShardIterator, batchSize))
.then(loop);
};

上面的代码失败,因为从loop返回的promise在 super 函数返回之前没有解析。如何使用上一次迭代的返回值作为下一次迭代的输入来顺序迭代 Promise 函数?

注意事项:每次迭代都依赖于前一次迭代返回的信息,结果需要总共收集每次迭代的记录

最佳答案

我不知道为什么当库提供者给出了使用 kinesis 流的完美示例时事情变得如此复杂。

https://github.com/awslabs/amazon-kinesis-client-nodejs/tree/master/samples

它有基本示例和点击流示例。

希望有帮助。

关于JavaScript:顺序迭代 Promise 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459383/

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