rxjs mapTo 运算符:在运行时计算返回值


function c() {
return Math.random();
}
source$.pipe(
map(a => c())
).subscribe(v => console.log(v));

假设有一个简单的代码,如上所示。我尝试的是当源流发出某些内容时记录值,但显然,我记录的值与源流中的值无关。所以它让我考虑使用这样的运算符mapTo

function c() {
return Math.random();
}
source$.pipe(
mapTo(c())
).subscribe(v => console.log(v));

但正如您可能猜到的那样,值总是相同的。更准确地说,它保留为第一个值,这不是我想要的。

所以我的观点是,我希望每次源发出我在评估中不使用的值时执行评估。我可以通过使用运算符让它像第一map代码一样工作,但是当我不使用源流中的值时,使用map似乎不对。像这样使用map可以吗?或者使用mapTo或其他东西对这种事情有什么解决方法吗?任何见解将不胜感激!

根据官方定义,每次源 Observable 发出值时,mapTo都会在输出 Observable 上发出给定的常量值

因此,您描述的行为是预期的行为。每次都会保留并发出来自Math.random()的第一个评估。

在这里使用map来获取预期的随机值似乎没有错。

最新更新