美文网首页
RxSwift学习

RxSwift学习

作者: X勒个F | 来源:发表于2018-11-09 09:45 被阅读12次

    编程思想

    • 用同步的方式,编写处理异步事件的代码。是基于异步 Event(事件)序列的响应式编程。它可以简化异步编程方法,并提供更优雅的数据绑定。让我们可以时刻响应新的数据的同时顺序地处理它们。

    我们可以定义一个以时间为维度的数组,它的元素是异步发生的事件。当事件发生时,我们就把它自动添加到这个数组里。然后,我们可以做两个事情,一方面,可以对添加进来的事件进行“二次加工”,筛选出符合我们要求的事件形态;另一方面,我们还可以添加对应事件的处理方法,这也就是某种形式的”订阅”。

    例如:RxSwiftUITextField添加了一个新的属性rx_text,我们暂时忽略掉它的具体类型,把它理解为就是那个“以时间为维度的数组”就可以了。
    而这个数组中事件的值,就是每一次用户输入之后,当前UITtextField中的字符串(注意:这里指的是输入之后,UITextField中的字符串,不是每一次用户输入的单个字符)。

    定义事件

    对于每一个添加到“数组”中的事件,都存在三种可能:

    • 成功:对于UITextField例子来说,就是用户输入了一个字符,让UITextField有了新的值;
    • 失败:在处理类似网络请求时,会处理这种事件;
    • 完成:表示“数组”中再也不会添加新的事件;

    RxSwift 使用enum来表示它,但是对于不同类型的成功事件,它包含的值有可能是不相同的,因此,它使用一个泛型的enum来表达一个发生的事件:

        /// Binds event to user interface.
        ///
        /// - In case next element is received, it is being set to control value.
        /// - In case error is received, DEBUG buids raise fatal error, RELEASE builds log event to standard output.
        /// - In case sequence completes, nothing happens.
        public func on(_ event: Event<E>) {
            switch event {
            case .error(let error):
                bindingError(error)
            case .next:
                _valueSink.on(event)
            case .completed:
                _valueSink.on(event)
            }
        }
    

    订阅事件

    相关文章

      网友评论

          本文标题:RxSwift学习

          本文链接:https://www.haomeiwen.com/subject/wpsnxqtx.html