2015-01-18 11 views
69

Ho bisogno di creare una sottoscrizione a un osservabile che viene immediatamente eliminato quando viene chiamato per la prima volta.rxjs crea una sottoscrizione una volta e disponi il metodo

C'è qualcosa del genere? Qualcosa come observable.subscribeOnce (func)

Il mio caso d'uso, sto creando un abbonamento in un gestore di route espresso e l'abbonamento viene chiamato più volte per richiesta.

risposta

129

non sicuro al 100% di quello che è necessario, ma se si desidera solo osservare il primo valore, quindi utilizzare first() o take(1):

observable.first().subscribe(func); 
+9

L'abbonamento si ripulisce automaticamente dopo? –

+25

Sì, sì. Prendi e prima entrambi annulla l'iscrizione quando viene soddisfatta la loro condizione. – Brandon

+10

Perché la documentazione non dice che elimina automaticamente l'abbonamento? – jzig

21

RxJS ha alcuni dei migliori documentazione che abbia mai venire attraverso. Seguendo il link qui sotto ti porterai ad un uso estremamente utile della tabella di casi di utilizzo degli operatori. Ad esempio, nella casella "Voglio prendere il primo valore" sono tre gli operatori: first, firstOrDefault e sample.

Nota: se una sequenza osservabile viene completata senza notifiche, l'operatore first notifica agli abbonati un errore mentre l'operatore firstOrDefault fornisce un valore predefinito ai sottoscrittori.

operator use case lookup

+2

Grazie per averlo condiviso. Stavo cercando di crearne uno per mio riferimento e non ho mai saputo che esiste già lì :) – ATHER

+0

sei il benvenuto @ATHER – DetweilerRyan

Problemi correlati