Swift的反应式编程第1部分
如果您是iOS开发人员,那么您应该已经听说过RxSwift。 这是Reactive编程的快速版本。 RxSwift功能强大且有效,它将为您完成代码中的所有工作,并使您的开发人员生活变得轻松。
不相信吗? 比起您,我可以检查一下此介绍性的Reactive Programming,与我me —> 新手的Reactive编程 。
RxSwift漫游以下条款:
–观察员与观察员
– 学科
–运营商
–调度程序
让我们开始一个个地探索所有这些东西。
可观察者和观察者:
“事件A发出一些数据,订阅事件A的其他事件(例如事件B和事件C)将获得该发出的数据。 发出数据的事件(在这种情况下为Event-A)被称为“ 可观察的 ”或“ 可观察的序列 ”,并且接收到发出的数据的所有事件(在这种情况下为Event-B和Event-C)被称为“ 观察者 ”。
这是理解Observable的最简单定义。
可观察的数据可以是连续的,也可以在多个实例中发出。 观察者可以依次接收所有这些实例。
让我们检查下图:
这是上图快速显示编码的方式:
let observableA = Observable.of(1,2,3,4,5,6)//创建可观察的
让observerB = myFirstObservable.asObservable()
//订阅Observable
readerB.subscribe {事件在
打印(事件)
}
输出:
下一个(1)
下一个(2)
下一个(3)
下一个(4)
下一个(5)
下一个(6)
已完成
在这里,观察者B不断获取来自A的数据。相同的基础也将适用于其他观察者(C和D)。
您可能会对上面的输出中的“下一个”和“已完成”这两个术语感到好奇。 让我们检查一下。
可观察的生命周期:
可观测值包括三个主要事件:
-下一个
-错误
-完成
这里要记住两点:
(1)当Observable发出一个数据元素,即Next事件。在上述情况下,Observable A发出六次数据。 因此观察者将一个接一个地获得下一个事件。
(2)当可观察到的事件将完成所有下一个事件时,它将以完成或错误终止。
--1--2--3--4--5--6--| // Completed
--1--2--3--4--X // Error
我们来看一些例子:
//仅观察1个元素
让observableOfJust = Observable.just(“ SWIFT”)
observableOfJust.subscribe {事件在
打印(事件)
}
输出:
下一个(SWIFT)
已完成
................................................... .............
//观察数组
让observablOfArray = Observable.of([[“ Ronaldo”,“ Messi”,“ Neymar”])
//您也可以这样编写下一个事件
observablOfArray.subscribe(onNext:{(arr)in
打印(arr)
})
输出:
[“罗纳尔多”,“梅西”,“内马尔”
................................................... .............
//观察数据顺序
让observableOfSequence = Observable.of(“罗纳尔多”,“梅西”,“内马尔”)
observabl5.subscribe(onNext:{(str)in
打印(str)
},onError:{(错误)
print(“如果发生任何错误,我将执行”)
},onCompleted:{
打印(“成功完成”)
})
输出:
罗纳尔多
梅西
内马尔
成功完成
如果您正在开发一些严肃的应用程序,那么您应该真正关心内存泄漏。因此,Observable具有一个重要方面,即“ 处理袋子” 。
一旦可观察到的所有下一个事件都完成并在结尾处终止,我们需要释放所有使用的资源,以避免内存泄漏。 为此,我们需要处置订阅。
//继续上面的示例
让disposeBag = DisposeBag()
让observableOfSequence = Observable.of(“罗纳尔多”,“梅西”,“内马尔”)
observabl5.subscribe(onNext:{(str)in
打印(str)
},onError:{(错误)
print(“如果发生任何错误,我将执行”)
},onCompleted:{
打印(“成功完成”)
})
.disposed(作者:disposeBag)
如果您想更多地了解如何使用该概念来使您的代码更好,可以尝试以下一些概念性的操作:
在下一部分中,我们将简要介绍主题和运算符 。
如有任何问题,请随时在Linkedin上加我。
敬请关注…..