信号的信号?反应性 Cocoa
Signal of Signals ? Reactive Cocoa
我试图理解这段代码以及为什么它 returns 信号中的信号。
[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
map:^id(id x) {
return [self signInSignal];
}]
subscribeNext:^(id x) {
NSLog(@"Sign in result: %@", x);
}];
根据我的理解,UIControlEventTouchupInside returns 下一个信号在映射函数中展开时包含 UIButton。
因此,可以安全地得出这样的结论:当我执行映射时,它期望返回的对象是一个对象(恰好是一个信号),并且它将信号双重包装成一个信号。那是反应性的 cocoa 通常期望类型是对象类型并将其包装到信号中?
或
我是不是漏掉了什么,我对Map的理解不是这样的,
它转换输入值,并产生一个输出值,(有时独立于输入值)
谢谢,我是新手,有什么建议就好了!
另一个相关问题,
假设 uicontrol 事件在 sends 和 error 事件中触发,它会被订阅的下一个错误捕获吗?
代码看起来不正确。您的理解是正确的,代码获取按钮点击的信号并将其映射到 "sign-in signals" 的信号。是的,信号中的信号。虽然信号中的信号很常见且非常有用,但如果不使用以下三个运算符之一,它就什么也做不了:flatten
、concat
或 switchToLatest
。在给定的代码中,signInSignal
将永远不会被触发,因为使用了这些运算符中的 none 个。
如果将map:
切换为flattenMap:
,签到信号将正常启动。
[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
flattenMap:^id(id x) {
return [self signInSignal];
}]
subscribeNext:^(id x) {
NSLog(@"Sign in result: %@", x);
}];
我试图理解这段代码以及为什么它 returns 信号中的信号。
[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
map:^id(id x) {
return [self signInSignal];
}]
subscribeNext:^(id x) {
NSLog(@"Sign in result: %@", x);
}];
根据我的理解,UIControlEventTouchupInside returns 下一个信号在映射函数中展开时包含 UIButton。
因此,可以安全地得出这样的结论:当我执行映射时,它期望返回的对象是一个对象(恰好是一个信号),并且它将信号双重包装成一个信号。那是反应性的 cocoa 通常期望类型是对象类型并将其包装到信号中?
或
我是不是漏掉了什么,我对Map的理解不是这样的, 它转换输入值,并产生一个输出值,(有时独立于输入值)
谢谢,我是新手,有什么建议就好了!
另一个相关问题,
假设 uicontrol 事件在 sends 和 error 事件中触发,它会被订阅的下一个错误捕获吗?
代码看起来不正确。您的理解是正确的,代码获取按钮点击的信号并将其映射到 "sign-in signals" 的信号。是的,信号中的信号。虽然信号中的信号很常见且非常有用,但如果不使用以下三个运算符之一,它就什么也做不了:flatten
、concat
或 switchToLatest
。在给定的代码中,signInSignal
将永远不会被触发,因为使用了这些运算符中的 none 个。
如果将map:
切换为flattenMap:
,签到信号将正常启动。
[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
flattenMap:^id(id x) {
return [self signInSignal];
}]
subscribeNext:^(id x) {
NSLog(@"Sign in result: %@", x);
}];