Dam*_*n C 4 javascript rxjs typescript angular
我有一个代码块,负责获取一个Observable<string[]>,然后将其映射到Observable<string>并发出彼此相隔 1 秒的值。
可以将其想象为网站上的消息滚动条。
我当前的代码运行如下:
const arrayOfStrings$ = of([
'Warming things up',
'Getting things ready',
'Welcome'
]);
this.messages$ = arrayOfStrings$.pipe(
switchMap((messages) => from(messages).pipe(
concatMap((innerMessage) => of(innerMessage).pipe(delay(1000))),
)),
tap((message) => {
console.log(`Message: ${message}`);
})
);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法用更少的代码来做到这一点?困扰我的主要是彼此之间的switchMap()关系。concatMap()
感谢您的任何帮助和建议。
编辑:这是我在实际项目中运行的简化版本。我只是想找到一种更简单的方法从 Observable<string[]> 到 Observable 并在每次发射后将每次发射延迟一秒
您可以使用concatMap()和delay()运算符来确保每次发射都会以指定的时间间隔逐一传送。
const arrayOfStrings = [
'Warming things up',
'Getting things ready',
'Welcome'
];
(from(arrayOfStrings)
.pipe(
concatMap(message =>
of(message).pipe(delay(1_000))
),
)
.subscribe()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |