学习反应式编程和 Angular 2 (Typescript)我遇到了一个不寻常的用例。
编辑:这是Plunker
我正在使用Observable
来显示字符串列表并模拟打字机效果,如下所示
<li *ngFor="let message of messages">
<p class="message">{{message | async}}</p>
</li>
export class Component implements OnInit {
messages: Observable<string>[];
constructor(private service:Service) {
this.service= service;
this.messages = [];
}
ngOnInit() {
this.service.messageStream()
.map(
message => Observable
.from(message)
.scan((acc, curr) => acc + curr)
.zip(Observable.interval(20), (x) => x)
).subscribe(
m => {this.messages.push(m)}
);
}
}
我的服务显然会返回一个Observable本身,它就像一个魅力。
现在,我想知道如何一次显示一条消息。也就是说,在从messageStream
读取下一条消息之前,等待内部Observable完成。
我读过有关concat()
和pause()/resume()
的内容,但我正在努力弄清楚如何将运算符应用于我的情况。