Così la distinzione sembra essere: defer
è buono quando si ha qualcosa che crea/restituisce un osservabile già, ma non vogliono che questo processo accada fino all'abbonamento.
create
è buono quando è necessario avvolgere manualmente un processo asincrono e creare un osservabile. Tale creazione è anche differita fino all'abbonamento.
Per dirla in altro modo:
defer
è un operatore che permette composizione differita delle sequenze osservabili.
create
è un'implementazione personalizzata di sequenza osservabile (in cui la creazione viene differita fino alla sottoscrizione).
Quindi, se si dispone di una situazione in cui è possibile utilizzare per creare un just
Observable
da alcuni risultati/valore o si dispone di un livello di API di rete che restituisce un Observable
della richiesta, ma non si vuole che la richiesta per dare il via fino all'abbonamento. defer
andrebbe bene per quegli scenari.
Se si dispone di un livello di rete API non ritorno un Observable
per una richiesta, ma che è necessario un'interfaccia Observable
a, si potrebbe utilizzare create
. Tuttavia, la sequenza Observable
non verrà creata fino all'abbonamento. Se si desidera che la chiamata di rete si avvii indipendentemente dall'abbonamento, si utilizzerà un meccanismo diverso, ad esempio Subject
, potenzialmente riprodotto.
fonte
2017-01-24 16:10:11