Не в состоянии понять параметры debounce в rxjs - PullRequest
0 голосов
/ 02 апреля 2019

Я хотел понять интеллигентность, отображаемую в визуальном коде, что меня запутало

enter image description here

debounce(
durationSelector: (value: {}) => SubscribableOrPromise<any>
): MonoTypeOperatorFunction<{}>

из приведенного выше примера, я думаюЯ понял следующее:

  1. debounce - это имя функции
  2. durationSelector - это функция, которая является единственным параметром:

    а.value, который принимает Object в качестве параметра

    b.SubscribableOrPromise<any> - это тип, который функция будет возвращать

  3. MonoTypeOperatorFunction<{}>, не в состоянии понять, как функция может вернуть MonoTypeOperatorFunction<{}>, когда она уже возвращает SubscribableOrPromise<any>, это где яя в замешательстве и не могу понять

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

не в состоянии понять, как функция может вернуть MonoTypeOperatorFunction<{}>, когда она уже возвращает SubscribableOrPromise<any>

Это , а не , что здесь описано, у вас нет ни одной функции, которая возвращает MonoTypeOperatorFunction, а также SubscribableOrPromise. У вас есть две функции :

  1. debounce; и
  2. аргумент durationSelector для debounce (который может быть анонимным в вашем коде).

debounce возвращает MonoTypeOperatorFunction<{}>, поэтому результат может быть передан в pipe (что занимает OperatorFunction с, из которых это подтип).

debounce требует функции при передаче в качестве аргумента для возврата SubscribableOrPromise<any>, строка:

(value: {}) => SubscribableOrPromise<any>

- объявление аргумента , durationSelector; это тип функции .

Я бы порекомендовал прочесть «функции высшего порядка» , поскольку это действительно важная концепция, чтобы понять, собираетесь ли вы использовать RxJS.

0 голосов
/ 02 апреля 2019

Единственный параметр для debounce выглядит как ссылка на функцию, записанная в лямбда-форме:

(value: {}) => SubscribableOrPromise<any>

Часть перед стрелкой => обозначает параметры функции. Часть после стрелки является типом возврата. SubscribableOrPromise должно означать, что ваш возвращаемый тип должен содержать then функцию объекта Promise или subscribe функцию, используемую в RxJs

Попробуйте такую ​​функцию:

function toPromise(value) {
    return Promise.resolve(value);
}

// code in between
.debounce(toPromise);

Это просто возвращает значение как обещание ES6. Измените toPromise на любое значение содержимого функции.

...