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

时间:2018-06-05 08:48:10

标签: rxjs

  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或其他内容的此类问题的解决方法?任何见解将不胜感激!

1 个答案:

答案 0 :(得分:2)

根据official definition,每当源Observable发出一个值时,mapTo就会在输出Observable上发出给定的常量值

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

在这里使用map来获取随机值是没有错的。