首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信号信号?反应性可可

信号信号?反应性可可
EN

Stack Overflow用户
提问于 2015-02-20 02:15:48
回答 1查看 751关注 0票数 1

我试图理解这段代码,以及为什么它会返回信号信号。

代码语言:javascript
复制
[[[self.signInButton
   rac_signalForControlEvents:UIControlEventTouchUpInside]
   map:^id(id x) {
     return [self signInSignal];
   }]
   subscribeNext:^(id x) {
     NSLog(@"Sign in result: %@", x);
   }];

据我所知,UIControlEventTouchupInside返回一个包含在map函数中的UIButton的下一个信号。

因此,从这里可以安全地得出结论,当我执行映射时,它期望返回的对象是一个对象(碰巧是一个信号),它将信号双重包装成一个信号。也就是说,活性可可通常希望这种类型是一个对象类型,并将其包装成一个信号?

我是不是在这里遗漏了什么,我对Map的理解不是这样的,它转换了输入值,并产生了一个输出值(有时独立于输入值)

谢谢,我是新手,任何建议都会很好!

另一个相关的问题,

让我们简单地说,uicontrol事件在发送和错误事件中发生了接触,它会被订阅下一个错误捕获吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-20 06:29:15

代码看上去不正确。您正确地理解了代码接收按钮点击的信号并将其映射到“登录信号”的信号。是的,信号的信号。虽然信号信号是常见的和非常有用的,但如果不使用这三个操作符中的一个:flattenconcatswitchToLatest,它就什么也做不了。在给定的代码中,signInSignal永远不会被触发,因为没有使用这些运算符。

如果您将map:切换到flattenMap:,则登录信号将正确启动。

代码语言:javascript
复制
[[[self.signInButton
    rac_signalForControlEvents:UIControlEventTouchUpInside]
    flattenMap:^id(id x) {
        return [self signInSignal];
    }]
    subscribeNext:^(id x) {
        NSLog(@"Sign in result: %@", x);
    }];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28620606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档