forkJoin is deprecated: resultSelector is deprecated, pipe to map instead

前端 未结 6 2454
栀梦
栀梦 2020-12-15 02:45

I\'m working on an Angular 6 project.

Running ng lint gives the following Warning:

"forkJoin is deprecated: resultSelector is deprecated,

相关标签:
6条回答
  • 2020-12-15 02:54

    forkJoin should work. Which rxjs version are you using? Latest version should be doing this:

    import { of, combineLatest, forkJoin } from 'rxjs';
    import { map, mergeAll } from 'rxjs/operators';
    

    Here the working code:

    import { of, forkJoin } from 'rxjs';
    
    const observables = [of('hi'), of('im an'), of('observable')];
    
    const joint = forkJoin(observables);
    
    joint.subscribe(
      s => console.log(s) 
    )
    

    Should output:

    ["hi", "im an", "observable"]

    I tried reproducing this but I see no warning:

    https://stackblitz.com/edit/angular-v4nq3h?file=src%2Fapp%2Fapp.component.ts

    0 讨论(0)
  • 2020-12-15 02:57

    This is because they the RXJS team puts their deprecation warnings at the top of the file.

     import { Observable } from '../Observable';
    import { ObservableInput, ObservedValueOf, ObservedValuesFromArray, SubscribableOrPromise } from '../types';
    
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T>(v1: SubscribableOrPromise<T>): Observable<[T]>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>): Observable<[T, T2]>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>): Observable<[T, T2, T3]>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>): Observable<[T, T2, T3, T4]>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>): Observable<[T, T2, T3, T4, T5]>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>): Observable<[T, T2, T3, T4, T5, T6]>;
    export declare function forkJoin<A>(sources: [ObservableInput<A>]): Observable<[A]>;
    export declare function forkJoin<A, B>(sources: [ObservableInput<A>, ObservableInput<B>]): Observable<[A, B]>;
    export declare function forkJoin<A, B, C>(sources: [ObservableInput<A>, ObservableInput<B>, ObservableInput<C>]): Observable<[A, B, C]>;
    export declare function forkJoin<A, B, C, D>(sources: [ObservableInput<A>, ObservableInput<B>, ObservableInput<C>, ObservableInput<D>]): Observable<[A, B, C, D]>;
    export declare function forkJoin<A, B, C, D, E>(sources: [ObservableInput<A>, ObservableInput<B>, ObservableInput<C>, ObservableInput<D>, ObservableInput<E>]): Observable<[A, B, C, D, E]>;
    export declare function forkJoin<A, B, C, D, E, F>(sources: [ObservableInput<A>, ObservableInput<B>, ObservableInput<C>, ObservableInput<D>, ObservableInput<E>, ObservableInput<F>]): Observable<[A, B, C, D, E, F]>;
    export declare function forkJoin<A extends ObservableInput<any>[]>(sources: A): Observable<ObservedValuesFromArray<A>[]>;
    export declare function forkJoin(sourcesObject: {}): Observable<never>;
    export declare function forkJoin<T, K extends keyof T>(sourcesObject: T): Observable<{
        [K in keyof T]: ObservedValueOf<T[K]>;
    }>;
    /** @deprecated resultSelector is deprecated, pipe to map instead */
    export declare function forkJoin(...args: Array<ObservableInput<any> | Function>): Observable<any>;
    /** @deprecated Use the version that takes an array of Observables instead */
    export declare function forkJoin<T>(...sources: ObservableInput<T>[]): Observable<T[]>;
    
    0 讨论(0)
  • 2020-12-15 02:59

    This gave this warning:

    forkJoin is deprecated: Use the version that takes an array of Observables instead (deprecation)

     forkJoin(this.getProfile(), this.getUserFirstName(), this.getUserLastName())
          .subscribe(([res1, res2, res3]) => {
            this.OnboardingUser = res1;
            this.userFirstName = res2;
            this.userLastName = res3;
          }, err => { console.log(err); });
    

    I have changed it like so: i.e. added []

     forkJoin([this.getProfile(), this.getUserFirstName(), this.getUserLastName()])
          .subscribe(([res1, res2, res3]) => {
            this.OnboardingUser = res1;
            this.userFirstName = res2;
            this.userLastName = res3;
          }, err => { console.log(err); });
    
    0 讨论(0)
  • 2020-12-15 03:01
    forkJoin(observable1, observable2)       > WORKING - deprecation warning
    forkJoin([observable1, observable2])     > WORKING - no warning
    
    0 讨论(0)
  • 2020-12-15 03:06

    I was able to fix this by getting rid of the ellipsis:

    forkJoin(observables).subscribe();

    As long as observables is already an array, it should have the same result.

    0 讨论(0)
  • 2020-12-15 03:18

    accroding to forkJoin.d.js , the forkJoin(...args) is deprecated, you can write the other way. for your source code, since you already have an array with same type, just pass your array will be OK.

    //forkJoin.d.js
    import { Observable } from '../Observable';
    import { ObservableInput } from '../types';
    export declare function forkJoin<T>(sources: [ObservableInput<T>]): Observable<T[]>;
    export declare function forkJoin<T, T2>(sources: [ObservableInput<T>, ObservableInput<T2>]): Observable<[T, T2]>;
    export declare function forkJoin<T, T2, T3>(sources: [ObservableInput<T>, ObservableInput<T2>, ObservableInput<T3>]): Observable<[T, T2, T3]>;
    export declare function forkJoin<T, T2, T3, T4>(sources: [ObservableInput<T>, ObservableInput<T2>, ObservableInput<T3>, ObservableInput<T4>]): Observable<[T, T2, T3, T4]>;
    export declare function forkJoin<T, T2, T3, T4, T5>(sources: [ObservableInput<T>, ObservableInput<T2>, ObservableInput<T3>, ObservableInput<T4>, ObservableInput<T5>]): Observable<[T, T2, T3, T4, T5]>;
    export declare function forkJoin<T, T2, T3, T4, T5, T6>(sources: [ObservableInput<T>, ObservableInput<T2>, ObservableInput<T3>, ObservableInput<T4>, ObservableInput<T5>, ObservableInput<T6>]): Observable<[T, T2, T3, T4, T5, T6]>;
    export declare function forkJoin<T>(sources: Array<ObservableInput<T>>): Observable<T[]>;
    export declare function forkJoin<T>(v1: ObservableInput<T>): Observable<T[]>;
    export declare function forkJoin<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>): Observable<[T, T2]>;
    export declare function forkJoin<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>): Observable<[T, T2, T3]>;
    export declare function forkJoin<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>): Observable<[T, T2, T3, T4]>;
    export declare function forkJoin<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>): Observable<[T, T2, T3, T4, T5]>;
    export declare function forkJoin<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>): Observable<[T, T2, T3, T4, T5, T6]>;
    /** @deprecated resultSelector is deprecated, pipe to map instead */
    export declare function forkJoin(...args: Array<ObservableInput<any> | Function>): Observable<any>;
    export declare function forkJoin<T>(...sources: ObservableInput<T>[]): Observable<T[]>;
    
    0 讨论(0)
提交回复
热议问题