稳定的API源代码如下:
空操作员:直接发送。
看一个简单的例子:
我们将永远不会在控制台中看到或打印,因为空不会发出任何数据,只有完整的事件。
此处引入了Deboundce,以避免使用闪烁的旋转器。当数据加载非常快时,如果用户看到几秒钟的Spinner动画,那是一个不良的用户体验。
避免此用户交互问题的方法之一是引入它。
该装载机需要满足需求:
例如,我们的数据加载需要1.2秒。在第一秒钟,我们没有显示任何内容,然后在1秒钟后出现一个装载器。在0.2秒后,我们收到了数据,但是我们将旋转器保留在屏幕上0.8秒。。这个旋转器不会闪烁。
实际代码:
在这里,我们有两个触发主题以开始和取消加载。在应加载时,我们的非Flickerloader发射null,在时间点我们应该显示其实际加载数据。我们使用操作员,因此我们可以多次触发它。
让我们继续编写nonflickerloader函数。首先,我们定义接口。我们使用Universal,因为我们不知道会得到的响应类型:
该功能接受可观察到的数据和两个可选参数,以指示我们等待多长时间,然后显示启动器的加载指示器和最小持续时间。
对于该功能的特定实现代码,首先创建一个可观察到的加载:
此$加载是一个徽标,告诉我们是否应该显示旋转器。
地图设置除第一个发射器以外的所有发射器。要在完成流之前通过。我们还开始启动(false),因为我们只想在给定延迟后显示加载指示。
注意计时器的第二个参数:
以下代码的含义是在1秒钟后传输整数1,然后每2秒发射一次增量整数序列。
原始:https://juejin.cn/post/7095546201547276295