【问题标题】:Splitting one emission into several将一个发射分成几个
【发布时间】:2019-03-18 12:24:02
【问题描述】:

我有一个 observable,numberRange$,它发出一组数字,比如[65, 66, 67, 68]。

是否有任何数字可以订阅numberRange$ 并将数组中的每个数字作为新管道中的单独发射?

每个数字都将用作异步 http 调用的输入,使用 mergeMap 批处理 http 调用很简单,因为 api 一次只允许 2 次并行计算。

目前,我订阅numberRange$ 并将输出保存在变量numberRange$ 并使用rxjs/operators.from(numberRange).pipe(mergeMap(someFunc, batchCount)) 执行操作,但我宁愿直接管道numberRange$ 并将数组拆分为单独的排放之前击中mergeMap。

感谢您的精彩回答!

【问题讨论】:

  • 你可以只使用mergeAll(),例如:numberRange$.pipe(mergeAll()).subscribe()

标签: rxjs rxjs6


【解决方案1】:

当然,我认为您可以使用 mergeMap 来拆分发射。

numberRange$.pipe(
    mergeMap(nums => nums) // mergeMap(nums => from(nums))
).subscribe(console.log);

【讨论】:

  • 像魅力一样工作!
【解决方案2】:

你可以使用concatMap:

import { of } from 'rxjs';
import { concatMap } from 'rxjs/operators';

of([65, 66, 67, 68]).pipe(concatMap(x => x)).subscribe(console.log);

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多