ReactiveCocoa和PromiseKit之间的主要区别是什么?

dri*_*ing 5 promise ios reactive-cocoa

ReactiveCocoa使用RACSignal和PromiseKit使用Promise来包装值.它们可以将异步工作链接在一起.ReactiveCocoa和PromiseKit之间的主要设计区别是什么?

Eva*_*wry 6

信号和promise是将异步操作表示为类型值的方法,这些可以以回调/通知/委托不能的方式传递,链接,组合,嵌套等.

两者之间的差异就像是正方形和矩形之间的差异,其中所有承诺都是信号,但并非所有信号都是承诺.承诺是信号的一个特定用例.

信号表示任意数量的异步事件的时间线,由完成或故障终止.下图是所有可能的信号 - 任何数量的事件以失败或完成结束

--------------------Event(eventData)-Completion()

--------------Completion()

Event(eventData)---------Event(eventData)----------Failure(errorData)

-------------------------------------Failure(errorData)
Run Code Online (Sandbox Code Playgroud)

promise表示单个异步事件或单个异步故障.下图表示可能的承诺:

-------Completion(eventData)

----------------------------------------------Completion(eventData)

--------Failure(errorData)

------------------------Failure(errorData)
Run Code Online (Sandbox Code Playgroud)

正如您可能已经看到的那样,任何承诺都可以通过在发送第一个事件后立即发送完成的信号来表示,如下所示:

-------Event(data)+Completion()

-------------------------------------------Event(data)+Completion()

--------Failure(errorData)

------------------------Failure(errorData)
Run Code Online (Sandbox Code Playgroud)