首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查多个订阅是否到达onComplete()?

如何检查多个订阅是否到达onComplete()?
EN

Stack Overflow用户
提问于 2018-09-13 14:36:57
回答 4查看 2.8K关注 0票数 3

我在一个角6组件中有两个订阅。现在,我想在这两个订阅到达onComplete后立即启动一个方法。

我要怎么做才是最简单的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-13 14:39:34

使用forkJoin。一旦所有给定的观测数据完成,它就会发出。

票数 8
EN

Stack Overflow用户

发布于 2018-09-13 14:52:43

一旦两者都完成了,您可以使用forkJoin来等待这两种情况,然后按照通常对可观察到的情况进行订阅。

就像这样

代码语言:javascript
运行
复制
import { Component } from '@angular/core';
import { forkJoin, Observable } from 'rxjs'

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

 constructor(){
   forkJoin([this.observableTest(2000), this.observableTest(3000)])
   .subscribe(data => {
     this.runMeAfter(data)
   })
 }

  runMeAfter(data){
    alert('yeahhh done with data, check your console for data')
    console.log(data)
  }

  observableTest(delay){
    return Observable.create(observer => {
      setTimeout(() => {
        observer.next("data to send can be object or anything");
        console.log("am done");
        observer.complete(); // to show we are done with our processing 
      }, delay);
    })
  }
}

一旦处理完这两个异步代码,runMeAfter就会被调用。

Stackblitz演示:https://stackblitz.com/edit/angular-forkjoin-theo

票数 5
EN

Stack Overflow用户

发布于 2019-05-30 14:58:53

我们可以使用merge操作符,它允许我们并行地订阅多个可观测值。

代码语言:javascript
运行
复制
const stream1$ = of (1,2,3);
    const stream2$ = of (4,5,6);
    const result$ = merge(stream1$, stream2$);
    result$.subscribe(
// value
      (val) => {console.log(val) },
// error
    (err) => { console.log(err) },
//on complete
    ()=>{console.log('completed') });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52316084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档