concat
将输入的 stream 或者 observable 按照顺序结合,返回一个新的流
类型
typescript
type concat: <T extends (Stream | Observable)[]>(...args$: T) => Stream<StreamTupleValues<T>[number]>;
参数
- args$: 多个 Stream 或 Observable 实例
详情
- 当前输入的流结束后,下一个输入的流推送的数据才会推送到新的流
- 当所有输入的流取消订阅后,新的流也会取消订阅
- 同一时间只有一个输入流的数据会被发出,其他流的数据会被忽略直到轮到它们
- 所有输入的流结束后,新的流也会结束
- 如果没有输入参数,将创建一个空流但不会发出任何数据
示例
typescript
import { $, concat } from 'fluth'
const stream1$ = $()
const stream2$ = $()
const stream3$ = $()
const concat$ = concat(stream1$, stream2$, stream3$)
concat$.then((value) => console.log('输出:', value))
// 第一个流发出数据
stream1$.next('a')
// 输出: a
stream1$.next('b')
// 输出: b
// 第二个流发出数据,但不会被输出(第一个流未完成)
stream2$.next('c') // 这个数据会被忽略
// 第一个流完成
stream1$.next('final1', true)
// 输出: final1
// 现在第二个流可以发出数据了
stream2$.next('d', true)
// 输出: d
// 第三个流开始发出数据
stream3$.next('e', true)
// 输出: e