RxJS concat方法签名

时间:2018-06-01 08:04:50

标签: 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 ... */

所有具有mote而非一般类型的签名(即从<T1, T2>开始)都是明确的(至少我希望如此):

  • this类似T1 T2的观察结果完成后,启动第二个可观察的签名Observable.from([1,2,3]).concat(Observable.of('HI'))this
  • T1 T2 T3类型的Observable.from([1,2,3]).concat(Observable.of('HI'), Observable.of('Hi there'))完成后,启动第二个observable以进行签名concat,在它开始第三个类型Observable.from([1,2,3]).concat()之后:{{1}} < / LI>
  • 依旧......

但如何翻译第一个呢? {{1}}怎么能在没有进一步观察到它的情况下工作呢? {{1}}

1 个答案:

答案 0 :(得分:2)

在RxJS v5.5中引入可管理运算符之前,修补后的concat方法 - Observable.prototype.concat - 是implemented using the static concat factory function的便捷方法。

就是这样:

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只是重新发出来自源可观察对象的通知。