rxjs是一个JavaScript库,可实现异步和基于事件的程序的创建。主要类型是Observable
,提供了一套功能和运算符,以使与数据通过的数据更容易。该系列将详细介绍这些操作员(以及一些独立功能),并提供其使用的示例。
在这篇文章中,我们将涵盖of
函数。
它有什么作用?
严格来说,这不是操作员,但它本身就是有用的。我将利用它来简化示例。
of
函数允许我们将正常值或一系列值转换为可观察的。当我们订阅此可观察到的时,它将散发出提供给它的所有值。一旦发出所有值,它将自动完成。
例子
of
可以像我们其他可观察的一样使用:
import { of } from 'rxjs';
of('Test Value')
.subscribe(x => {
console.log(x);
});
运行这个我们将看到
Test Value
of
函数很简单。它具有一个价值,并使我们有一个可观察的。
如果我们需要可观察到的发射多个值,我们可以通过将多个值传递给of
函数来做到这一点:
import { of } from 'rxjs';
of('Test Value', 'And a second', 'Third and final')
.subscribe(x => {
console.log(x);
});
Test Value
And a second
Third and final
虽然很简单,但不要低估其效用。以下是一些示例用例:
单位测试 - 能够模拟外部依赖关系对于有效的单位测试至关重要。 of
函数使从可观察的函数中指定返回值很容易。
缓存 - 如果我们有一个可观察到的电话,我们知道经常会改变,我们可能想缓存结果。在随后的通话中,我们可以返回缓存结果,而不是反复运行查询。 of
允许我们返回可观察的可观察值,这意味着调用代码不需要任何内部处理的知识来处理结果。
错误处理 - 如果我们使用可观察到的HTTP调用(如Angular HTTP客户端)实现了错误。尽管应该始终处理这些问题,但我们可能不想将异常归还给发起人。在这种情况下,我们可以处理错误(使用catchError
运算符)并使用of
返回默认值。
这些只是我看到的一些区域。关键是,它比您预期的要多。
此示例的源代码可在github上找到:https://github.com/drownedintech/rxjs-operators