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

Not able to understand debounce parameters in rxjs

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

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

从上面的例子中,我想我理解了以下内容:

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

    一个。 value 以 Object 为参数

    b。 SubscribableOrPromise<any> 是函数要使用的类型 return

  3. MonoTypeOperatorFunction<{}>,无法理解函数如何 return MonoTypeOperatorFunction<{}> 当它已经 return 时 SubscribableOrPromise<any>,这就是我感到困惑的地方无法理解

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

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

箭头=>之前的部分表示函数参数。箭头后面的部分是return类型。 SubscribableOrPromise 应该意味着您的 return 类型应该包含 Promise 对象的 then 函数或 RxJs

中使用的 subscribe 函数

试试这样的函数:

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

// code in between
.debounce(toPromise);

这只是 return 作为 ES6 承诺的值。 将 toPromise 更改为您想要的函数内容。

not able to understand how a function can return MonoTypeOperatorFunction<{}> when it already returns SubscribableOrPromise<any>

这里描述的不是,您没有 return MonoTypeOperatorFunctionSubscribableOrPromise 的功能。你有两个函数:

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

debounce returns MonoTypeOperatorFunction<{}>,因此结果可以传递给 pipe(需要 OperatorFunctions,它是子类型) .

debounce 需要 将函数 作为参数传递给 return SubscribableOrPromise<any>,行:

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

参数的声明durationSelector;这是 function type.

我建议您阅读 "higher-order functions",因为如果您要使用 RxJS,这是一个非常重要的概念。