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上加我。

敬请关注…..