2016-01-18 3 views
4

ReactiveCocoa использовать RACSignal и PromiseKit использовать Promise для переноса значений. Они могут обе цепи асинхронно работать вместе. Какова основная разница в дизайне ReactiveCocoa и PromiseKit?В чем основное отличие ReactiveCocoa и PromiseKit?

+2

Promises : ноль или одно значение. Сигналы: ноль или более значений. –

ответ

5

Сигналы и обещания представляют собой оба способа представления асинхронных операций с типизированными значениями, которые могут передаваться, закреплены, скомпонованы, вложены и т. Д. Способами, которые не могут выполнять функции обратного вызова/уведомления/делегата.

разница между этими двумя значениями, как разница между квадратом и прямоугольником, где все обещания являются сигналами, но не все сигналы являются обещаниями. обещание - это один конкретный случай использования сигнала.

Сигнал представляет собой временную шкалу любого количества асинхронных событий, завершенных завершением или сбоем. Следующие диаграммы все возможны signals- любого количество событий, заканчивающихся сбой или завершение

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

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

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

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

обещание представляет собой один асинхронное событие или один асинхронный отказ. следующие диаграммы представляют собой возможные обещания:

-------Completion(eventData) 

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

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

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

, как вы, вероятно, уже видим, любое обещание может быть представлена ​​в виде сигнала, который посылает завершение сразу после того, как он посылает его первое событие, например, так:

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

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

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

------------------------Failure(errorData) 
Смежные вопросы