За последние 24 часа нас посетили 20479 программистов и 1130 роботов. Сейчас ищут 582 программиста ...

Невозможно вызвать из-за отсутствия подписи вызова

Тема в разделе "JavaScript и AJAX", создана пользователем виталий032, 9 сен 2018.

  1. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Экспериментирую со switchMap() из Rxjs 6 в angular 6

    Читаю вот эту статью, немного изменил код, т.к. версия Rxjs другая.

    На предпоследней строчке VS Code подсвечивает ошибку:
    [ts] Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.

    Вот весь код:
    Код (Javascript):
    1. ngOnInit() {
    2.     let http1$: Observable<string> = this.simulateHttp("1", 1000);
    3.  
    4.     http1$.subscribe(
    5.       data => console.log(data),
    6.       null,
    7.       () => console.log('http1$ completed')
    8.     )
    9.   }
    10.  
    11.   simulateHttp(val: string, delay: number): Observable<string> {
    12.     let obs: Observable<string> = of("str");
    13.     return obs.pipe(delay(2000));
    14.   }
    В тоже время, если создать Observble в ngOnInit() вот так (ниже), то все работает:
    Код (Javascript):
    1. ngOnInit() {
    2.     let http1$: Observable<string> = of("str").pipe(delay(2000));
    3.  
    4.     http1$.subscribe(
    5.       data => console.log(data),
    6.       null,
    7.       () => console.log('http1$ completed')
    8.     )
    9.   }
     
  2. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Блин, сразу не заметил. TypeScript подумал, что я собираюсь вызвать переменную delay: number, передаваемую в метод simulateHttp, как функцию. А я хотел вызвать функцию delay из 'rxjs/operators'. Короче, поменял имя второго аргумента на другое delayTime, чтобы он не терялся в догадках.