RxJS 6.0 中采用 lettable operators 的例子

阅读时长 5 分钟读完

RxJS 是一个流行的 JavaScript 库,支持响应式编程。从 RxJS 5 开始,该库引入了 lettable operators,以使其 API 更加一致和易于使用。本文介绍了一些简单的示例,以帮助您理解 lettable operators,并展示它们是如何简化 RxJS 代码的。

什么是 lettable operators?

在 RxJS 5 及更早版本中,您可以使用巨大的操作符集合来转换 Observable 流。这些操作符作为 Observable 实例上的实例方法进行调用,例如:

在 RxJS 6 中,这些操作符被称为滤镜(pipeable)操作符。这些操作符现在是独立的函数,并被 import 到你的代码中,你可以使用管道(pipe)函数将它们连接在一起。这种方式被称为 lettable operators。

以下是相同的代码使用 lettable operators:

-- -------------------- ---- -------
------ - -- - ---- -------
------ - ------- --- - ---- -----------------

----- ------- - ----- -- --------
    -------- -- - - - --- ---
    ----- -- - - --
--

------------------- -- ---------------- -- -- -

lettable operators 构成了一个更小的 API,并使得 Observable 的链式操作变得更加直观。

让我们来看一下实际的例子

下面介绍了 lettable operators 是如何简化异步编程的。

假设你有一个搜索功能,当用户开始输入内容时,你需要发起 Ajax 请求。你可能需要在两个不同的流(用户输入事件和 Ajax 响应)上应用不同的变换。

在 RxJS 5 中,您会编写代码类似于以下内容:

-- -------------------- ---- -------
------ - ---------- - ---- ------------------
------ ---------------------------------
------ -----------------------------------------
------ ------------------------------

----- ------ - ----- --
    -----
        ------------------
        -----------------------
        ---------------- -- -------------------

----- ----------------- -- 
    ----------
        --------------------------------------------------------------------------------------------------
        ------------------ -------- ---------
        ------------ -- ------------- -- ----------

在 RxJS 6 中,您可以将搜索流链到您的操作:

-- -------------------- ---- -------
------ - --------- - ---- -------
------ - ---- - ---- ------------
------ - ------------- --------------------- ---- ------ --------- - ---- -----------------

----- ----- - ----------------------------------------

----- ------ - ----- -- ---------------- --------------
    ------------------
    -----------------------
    --------- -- --------------------
    --------------- -- ---------------------------------------------------------------------------------------------------
    ----------------- -------- ----------
    ----------- -- ------------- -- ---------
--

-------------------------------------

注意,这里没有需要导入的操作符。让我们来逐步分析一下这个代码的变化:

  • debounceTimedistinctUntilChangedpluckswitchMap 都不再是实例方法,而变为了 operator 的常规函数。
  • Observable.of 被简化为 fromEvent 函数,这个函数直接创建了一个 Observable 流以从事件中发出值。
  • map 操作符现在被用于每个变换步骤。

所有这些变化都使您的代码更加直观和易于维护。

结论

RxJS 的 lettable operators 使得 RxJS 6 的代码更加简洁清晰,使得流程操作逻辑更加一致,减少了需要导入的操作符,大大简化了开发者的代码书写并且方便维护。如果你正在使用 RxJS 6,并且正在写大量的 Observable 流,请考虑使用 lettable operators 简化您的代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6775ea416d66e0f9aa071990

纠错
反馈