映射运算符返回整数作为输出与数组作为输入

问题描述 投票:0回答:1

这是从文档的示例代码。我是新来RXJS,所以这可能是真正的轻松。

谁能解释地图运营商是如何操作数组后返回一个数字的整数?

我检查扫描运算符的返回值是从增加的阵列[0],[0,1],[0,1,2],[0,1,2,3] ....等。

// RxJS v6+
import { interval } from 'rxjs';
import { scan, map, distinctUntilChanged } from 'rxjs/operators';

// Accumulate values in an array, emit random values from this array.
const scanObs = interval(1000)
  .pipe(
    scan((a, c) => [...a, c], []),
    map(r => r[Math.floor(Math.random() * r.length)]),
    distinctUntilChanged()
  )
  .subscribe(console.log);
javascript rxjs rxjs6 rxjs-pipeable-operators
1个回答
0
投票

间隔发出递增的整数每一秒,扫描然后补充说,整数数组,然后在地图上翻出该数组的随机元素和distinctUntilChanged停止它从连续两次发射相同数量。一个更有效的方式来获得一个随机数,其中通过每次一个可能的最高数量的增加将是非常具有更高效

const { interval } = rxjs;
const { map, distinctUntilChanged } = rxjs.operators;

interval(1000).pipe(
  map(i => Math.ceil(Math.random() * i)),
  distinctUntilChanged()
).subscribe(val => { console.log(val); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>

无需所有以前的值存储在阵列中。

© www.soinside.com 2019 - 2024. All rights reserved.