首页 文章

可观察的forkjoin订阅类型

提问于
浏览
6

我正在使用类型化响应进行2次API请求调用,将它们组合成一个Observable.forkJoin,我希望将两种结果都放在不同的类型变量中 .

var observableOrganization: Observable<Organization> = this.getOrganizationDetails();
var observablePromotion: Observable<Promotion[]> = this.getPromotions();

  Observable.forkJoin([ observableOrganization, observablePromotion])
            .subscribe(**response**) => {
                **organization:Organization = response[0];
                promotions:Array<Promotions> = response[1];**
            },
            error => {
                //error here
            });

如何在单个订阅响应中获得键入的结果?我希望它有所帮助,谢谢你!

2 回答

  • 10

    当请求显式声明为 ObservalbleInput 时, forkJoin 将仅返回"nice"类型 .

    我个人更喜欢这种语法,使用“破坏”语言功能:

    const requests: [ObservableInput<Organization>, ObservableInput<Promotion[]>] = [observableOrganization, observablePromotion];
    forkJoin(requests)
        .subscribe(([organization, promotions]: [Organization, Promotion[]]) => {
            // use organization and promotions here
        },
        error => {
            //error here
        });
    
  • 0

    使用es6解构也可以添加类型,如果他们不自动分配

    Observable.forkJoin([ observableOrganization, observablePromotion])
            .subscribe([org, prom]: [Organization, Promotion[]]) => {
                organization:Organization = org;
                promotions: Promotions[] = prom
            },
            error => {
                //error here
            });
    

相关问题