【发布时间】:2018-06-05 08:48:10
【问题描述】:
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 或其他方法来解决此类问题?任何见解将不胜感激!
【问题讨论】:
-
你的用例真的涉及随机数吗?还是其他形式的外部状态?最好避免外部状态,所以我觉得您的问题可能还有更多。
-
@cartant 它不涉及随机数,但我想返回一个每次都需要评估的值,但与源流中的值无关
-
我认为您对
map所做的一切都很好。如果您不需要来自源 Observable 的值,您可以通过完全不将其包含在参数中来使其更加明显map(() => c())。 -
比 mapTo 短:
source$.pipe(map(c)) -
@martin 明白了!谢谢。
标签: rxjs