HKT*_*Lee 5 macos objective-c reactive-programming ios reactive-cocoa
ReactiveCocoa可以通过调用它将信号转换为"热"信号-subscribeCompleted:.但我认为如果你不关心结果(即没有订阅者),这种方法就相当冗长.
RACDisposable *animationDisposable = [[self play:animation] subscribeCompleted:^{
// just to make the animation play
}];
Run Code Online (Sandbox Code Playgroud)
而这三行并不足以表达我的意图.
有类似目的的方法吗?谢谢!
我想做什么,除了让它变热(=让它运行一次).
阿"热信号"是不管发送值(可能不工作)的是否有任何订户的信号.一个"冷信号"是推迟其工作和任何值的发送,直到它有一个用户的信号.冷信号将执行其工作并为每个订户发送值.
如果您想让冷信号只运行一次但有多个用户,则需要对信号进行多播.多播是一个非常简单的概念,其工作原理如下:
[subject sendNext:value].但是,您可以而且应该使用RACMulticastConnection更少的代码来完成上述所有操作:
RACMulticastConnection *connection = [signal publish];
[connection.signal subscribe:subscriberA];
[connection.signal subscribe:subscriberB];
[connection.signal subscribe:subscriberC];
[connection connect]; // This will cause the original signal to execute once.
// But each of subscriberA, subscriberB, and subscriberC
// will be sent the values from `signal`.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3582 次 |
| 最近记录: |