将一个排放分成几个
Splitting one emission into several
我有一个 observable,numberRange$
,它发出一组数字,比如 [65, 66, 67, 68]
。
是否有任何数字可以订阅 numberRange$
并将数组中的每个数字作为新管道中的单独发射?
每个数字都将用作异步 http 调用的输入,并且使用 mergeMap
对 http 调用进行批处理是微不足道的,因为 api 一次只允许 2 个并行计算.
目前,我正在订阅 numberRange$
并将输出保存在变量 numberRange$
中并使用 rxjs/operators.from(numberRange).pipe(mergeMap(someFunc, batchCount))
来执行操作,但我宁愿直接通过管道传输 numberRange$
并在命中 mergeMap
之前将数组拆分为单独的发射。
感谢您的好回答!
当然,我想你可以使用 mergeMap
来拆分发射。
numberRange$.pipe(
mergeMap(nums => nums) // mergeMap(nums => from(nums))
).subscribe(console.log);
您可以使用 concatMap
:
import { of } from 'rxjs';
import { concatMap } from 'rxjs/operators';
of([65, 66, 67, 68]).pipe(concatMap(x => x)).subscribe(console.log);
我有一个 observable,numberRange$
,它发出一组数字,比如 [65, 66, 67, 68]
。
是否有任何数字可以订阅 numberRange$
并将数组中的每个数字作为新管道中的单独发射?
每个数字都将用作异步 http 调用的输入,并且使用 mergeMap
对 http 调用进行批处理是微不足道的,因为 api 一次只允许 2 个并行计算.
目前,我正在订阅 numberRange$
并将输出保存在变量 numberRange$
中并使用 rxjs/operators.from(numberRange).pipe(mergeMap(someFunc, batchCount))
来执行操作,但我宁愿直接通过管道传输 numberRange$
并在命中 mergeMap
之前将数组拆分为单独的发射。
感谢您的好回答!
当然,我想你可以使用 mergeMap
来拆分发射。
numberRange$.pipe(
mergeMap(nums => nums) // mergeMap(nums => from(nums))
).subscribe(console.log);
您可以使用 concatMap
:
import { of } from 'rxjs';
import { concatMap } from 'rxjs/operators';
of([65, 66, 67, 68]).pipe(concatMap(x => x)).subscribe(console.log);