ReactiveCocoa_Use icon indicating copy to clipboard operation
ReactiveCocoa_Use copied to clipboard

RACCommand_Demo2的疑问

Open huangxianhui001 opened this issue 7 years ago • 8 comments
trafficstars

对于 RACCommand 执行的信号的订阅,网上的很多都说推荐使用flatten方法,虽然switchToLatest也是一样的效果,但是感觉flatten才更专业点,不知博主怎么看?

huangxianhui001 avatar Jul 02 '18 08:07 huangxianhui001

flattens是一种降阶的操作。比如信号A (a1, a2,a3..)在执行中,信号B执行了 b1,b2。 我们暂且当成两个线程理解,以时间为参考,假如结果是 a1 ,b1,a2,a3,b2 , flatten后的结果就是这么一条线。

WiKi123 avatar Jul 02 '18 09:07 WiKi123

switchToLatest是执行最新的信号,信号A中a1,a2执行,在a1结束后,信号b1在a2开始执行前执行,在b1执行期间a2执行,然后b1结束。switchToLatest操作后,结果就是a1, b1 ,把a2过滤了。

WiKi123 avatar Jul 02 '18 09:07 WiKi123

@huangxianhui001 二者虽然都是降阶操作,但是方式是不同的。flattens直接粗暴,一条线执行。switchToLatest内部还要考虑信号的开始和执行问题。

WiKi123 avatar Jul 02 '18 09:07 WiKi123

@WiKi123 可以考虑加个 demo 演示一下两者的区别

huangxianhui001 avatar Jul 02 '18 09:07 huangxianhui001

@huangxianhui001 你可以选中列表中那个方法,点击右上角图片按钮。那样看起来比较清晰。里面是图文解释的。

WiKi123 avatar Jul 02 '18 10:07 WiKi123

很不巧,RACCommand的几个例子都没有图片

huangxianhui001 avatar Jul 02 '18 10:07 huangxianhui001

最下面关于flattens和switchToLatest是有图片的。

WiKi123 avatar Jul 02 '18 10:07 WiKi123

赞,看到了

huangxianhui001 avatar Jul 02 '18 10:07 huangxianhui001