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