Оператор rxjs mapTo: вычисляет возвращаемое значение во время выполнения - PullRequest
0 голосов
/ 05 июня 2018
  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 голосов
/ 05 июня 2018

Согласно официальному определению , mapTo испускает заданное постоянное значение на выходе Observable каждый раз, когда источник Observable испускает значение.

Поэтомуописанное вами поведение является ожидаемым.Первая оценка из Math.random() сохраняется и генерируется каждый раз.

Кажется, нет ничего плохого в том, чтобы использовать map здесь, чтобы получить случайные значения, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...