【发布时间】:2018-12-18 01:13:33
【问题描述】:
我有一个 RxJS 序列如下:
(控件是 Angular FormControl)
control.valueChanges.pipe(
concatMap(cronExprs => from(cronExprs as Array<string>)),
concatMap(cron => this.invokeCronService(cron)),
toArray()
).subscribe(cronExprs => this.setCronExpressionModels(cronExprs))
假设 cronExprs 数组包含三个项目 ['..', '..', '..']。我可以看到,在调试时,concatMap(cron => this.invokeCronService(cron)) clojure 被调用了 3 次,但 toArray 从未被调用过,显然 subscribe clojure 也从未被调用过。似乎序列没有正确完成。
invokeCronService 是:
private readonly invokeCronService =
(cron: string): Observable<CronExpressionModel> =>
this.cronService.describeCron(cron).pipe(
map(result => result.get()),
map((description): CronExpressionModel => ({ cron, description }))
)
describeCron 很简单:
public describeCron(cronExpression: string): Observable<Result<string>> {
return of(Result.valid('', cronExpression))
}
我做错了什么?
【问题讨论】: