RxJS concat 方法签名

  • 本文关键字:方法 concat RxJS rxjs
  • 更新时间 :
  • 英文 :


concat.d.ts文件中,我们可以找到concat运算符的以下定义:

export declare function concat<T>(this: Observable<T>, scheduler?: IScheduler): Observable<T>;
export declare function concat<T, T2>(this: Observable<T>, v2: ObservableInput<T2>, scheduler?: IScheduler): Observable<T | T2>;
export declare function concat<T, T2, T3>(this: Observable<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, scheduler?: IScheduler): Observable<T | T2 | T3>;
/* List goes on with more and mode T4, T5 ... */

所有带有微尘而不是一种通用类型的签名(即从<T1, T2>开始(都是清楚的(至少我希望如此(:

  • 在完成T1类型的可观察this后,启动签名T2的第二个可观察量:Observable.from([1,2,3]).concat(Observable.of('HI'))
  • this类型的T1可观察量完成后,启动签名T2的第二个可观察量,之后它开始第三个类型为T3Observable.from([1,2,3]).concat(Observable.of('HI'), Observable.of('Hi there'))
  • 等等...

但是如何翻译第一个呢?如果没有进一步的可观察量传入其中,concat如何工作?:
Observable.from([1,2,3]).concat()

在 RxJS v5.5 中引入可管道运算符之前,修补的concat方法 -Observable.prototype.concat- 是一种使用静态concat工厂函数实现的便捷方法。

也就是说,这个:

Observable.from([1,2,3]).concat(Observable.from[4, 5]))

相当于这个:

Observable.concat(
Observable.from([1,2,3]),
Observable.from[4, 5])
)

可以调用Observable.concat并传递单个参数,如下所示:

Observable.concat(
Observable.from([1,2,3])
)

这相当于这个:

Observable.from([1,2,3]).concat()

因此,当如上所述调用修补的concat方法时,不会连接任何内容。这是有效的,但有些毫无意义,因为concat只是从可观察的源重新发出通知。

最新更新