无法理解rxjs中的去抖动参数

时间:2019-04-02 08:39:50

标签: rxjs6 debounce

我想了解可视代码中显示的智能感知,这让我更加困惑

enter image description here

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

从以上示例中,我认为我理解以下内容:

  1. debounce是函数的名称
  2. durationSelector是一个具有单个参数的函数:

    a。 value,它以对象为参数

    b。 SubscribableOrPromise<any>是函数要返回的类型

  3. MonoTypeOperatorFunction<{}>,无法理解函数在已经返回MonoTypeOperatorFunction<{}>的情况下如何返回SubscribableOrPromise<any>,这是我感到困惑且无法理解的地方

2 个答案:

答案 0 :(得分:1)

  

无法理解函数已经返回MonoTypeOperatorFunction<{}>时如何返回SubscribableOrPromise<any>

不是这里所描述的,您没有一个函数返回MonoTypeOperatorFunction以及SubscribableOrPromise。您具有两个功能

  1. debounce;和
  2. durationSelector的{​​{1}}参数(在您的代码中可能是匿名的)。

debounce返回debounce,因此结果可以传递到MonoTypeOperatorFunction<{}>(需要pipe s,其中是子类型)。

OperatorFunction要求您正在传递的函数作为其参数,以返回debounce,即行:

SubscribableOrPromise<any>

自变量(value: {}) => SubscribableOrPromise<any> 的声明;这是function type

我建议您阅读“高阶函数” ,因为这是了解您是否要使用RxJS的重要概念。

答案 1 :(得分:-1)

debounce的单个参数看起来像以lambda形式编写的函数引用:

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

箭头=>前面的部分表示功能参数。箭头后面的部分是返回类型。 SubscribableOrPromise意味着您的返回类型应包含Promise对象的then函数或RxJs中使用的subscribe函数

尝试这样的功能:

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

// code in between
.debounce(toPromise);

这只是将值作为ES6承诺返回。 将toPromise更改为所需的函数内容。