【问题标题】:Not able to understand debounce parameters in rxjs无法理解 rxjs 中的去抖动参数
【发布时间】:2019-08-23 12:28:40
【问题描述】:

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

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

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

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

    一个。 value 以 Object 为参数

    b. SubscribableOrPromise&lt;any&gt; 是函数要返回的类型

  3. MonoTypeOperatorFunction&lt;{}&gt;,无法理解一个函数如何返回MonoTypeOperatorFunction&lt;{}&gt;,而它已经返回SubscribableOrPromise&lt;any&gt;,这是我感到困惑和无法理解的地方

【问题讨论】:

  • 表示可订阅或承诺。可订阅是您可以订阅的东西,具有subscribe 方法的东西。或者,如果您询问 &lt;any&gt; 部分,请参阅 typescriptlang.org/docs/handbook/generics.html
  • debounce 接受一个返回 SubscribableOrPromise 的对象?那么什么是 MonoTypeOperatorFunction
  • 你的意思是object吗?你是什​​么意思MonoTypeOperatorFunction是什么”?目前尚不清楚您是不了解 TS 声明,还是您尝试使用的工具的 API,或者两者兼而有之。
  • @jonrsharpe,是的,debounce 将采用 Object 类型的值,对

标签: rxjs6 debounce


【解决方案1】:

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

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

箭头=&gt;之前的部分表示函数参数。箭头后面的部分是返回类型。 SubscribableOrPromise 应该意味着你的返回类型应该包含一个 Promise 对象的 then 函数或 RxJs 中使用的 subscribe 函数

试试这样的函数:

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

// code in between
.debounce(toPromise);

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

【讨论】:

  • so (value: {}) => SubscribableOrPromise,这将采用 Object 类型的值并返回 SubscribableOrPromise 类型,对吧?那么在intellisense中可以看到MonoTypeOpertorFunction是什么意思
  • 所以SubscribableOrPromise 类型应该由您用作debounce 参数的函数返回(您必须实现的那个)。 MonoTypeOpertorFunctiondebounce 函数本身的返回类型。
  • 您应该能够通过导航到debounce 的声明来阅读该类型的定义,因为它应该作为返回类型被提及。你可以阅读它并弄清楚它包含的成员的用途。
  • 我刚刚更新了我的问题,请你看看@Andor Baranyi
【解决方案2】:

无法理解当函数已经返回 SubscribableOrPromise&lt;any&gt; 时如何返回 MonoTypeOperatorFunction&lt;{}&gt;

不是这里描述的,你没有一个函数可以返回MonoTypeOperatorFunctionSubscribableOrPromise。你有两个功能

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

debounce 返回MonoTypeOperatorFunction&lt;{}&gt;,因此可以将结果传递给pipe(它采用OperatorFunctions,这是它​​的一个子类型)。

debounce 需要 您传递的函数 作为参数返回SubscribableOrPromise&lt;any&gt;,行:

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

参数的声明durationSelector;这是function type

我建议阅读“高阶函数”,因为如果你要使用 RxJS,这是一个非常重要的概念。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多