javascript - 如何从无限生成器创建有限长度生成器
问题描述
所以我有一个 javascript 生成器(如下),它继续无限地产生随机数。
function* createRandomNumberStream(): IterableIterator<number> {
while (true) {
yield Math.random()
}
}
如何使用 type 编写生成器函数(it: Iterable<T>, n: number) => Iterable<T>
,它返回一个在 n 产生后结束的新迭代?
请注意,createRandomStream()
生成器并不真正相关,它只是一个无休止的可迭代生成器的示例。我正在尝试制作一个基本上切片可迭代的生成器。
解决方案
这是你想要的吗?
function* createRandomNumberStream() {
while (true) {
yield Math.random()
}
}
function* take<T>(it: Iterator<T>, count: number) {
let currentCount = 0
while (currentCount++ < count) {
yield it.next().value
}
}
const stream = take(createRandomNumberStream(), 3)
for (const num of stream) {
console.log(num)
}
推荐阅读
- php - 用于加密和解密的 PHP 代码在每次执行时创建不同的密文。任何人都可以用 PL/SQL 中的等效代码帮助我吗
- dart - 在 Flutter App 上按下按钮后,如何移动到屏幕下方的特定 Widget?
- kdb - 以字符串为参数的函数
- r - 当每个计算值都依赖于前一个值时如何使用 apply
- xml - 祖先和后代的长形式 - Xpath 轴
- c - 验证整数 inout 和一般情况
- react-native - 针对 Android 和 iOS 平台的 React Native 应用程序的自动化测试
- windows - 如何使用批处理在 Windows 上自动启动所有服务?
- java - 将 xml 映射到 Json
- itext - 使用 iText 5.5 使用 PdfAnnotation 旋转 PDF 签名外观(文本和背景图像)