使Observable的订阅者阻止

时间:2016-12-18 12:34:10

标签: angular typescript rxjs reactive-programming

学习反应式编程 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()的内容,但我正在努力弄清楚如何将运算符应用于我的情况。

0 个答案:

没有答案