2017-01-31 1 views
3

Ich bin neu in RxJS. In meiner App brauche ich eine unabhängige Absage von Deferred Action. Here's ein funktionierendes Beispiel (die Verzögerung beträgt 3 Sekunden). Aber wenn ich mehrere Elemente lösche und einen von ihnen annulliere, dann annulliere ich alle gleichzeitig.Unabhängige Kettenunterdrückung in Redux-Observable?

Epische Code:

const itemsEpic = action$ => 
    action$.ofType('WILL_DELETE') 
    .flatMap(action => 
     Observable.of({type: 'DELETE', id: action.id}) 
     .delay(3000) 
     .takeUntil(action$.ofType('UNDO_DELETE')) 
) 

Ich glaube, ich brauche eine id-takeUntil Operator passieren, aber ich weiß nicht, wie es zu tun.

Antwort

3

Wenn ich den takeUntil Operator richtig verstehe, hört es auf, neue Artikel aus dem Observable zu senden, es wurde aufgerufen, sobald das Argument Observable es ausstrahlt, ist das erste Element. In diesem Sinne könnten Sie so etwas tun:

const itemsEpic = action$ => action$.ofType('WILL_DELETE') 
    .flatMap(action => Observable.of({ type: 'DELETE', id: action.id }) 
    .delay(3000) 
    .takeUntil(action$.ofType('UNDO_DELETE').filter(({id}) => id === action.id)) 
) 
+1

Sie scheinen es perfekt zu verstehen. Genau das würdest du tun. – jayphelps

+0

Diese Lösung funktioniert genau wie erwartet. Vielen Dank. –

+0

@AndyPro markieren Sie bitte die Antwort als akzeptiert, damit er richtiges Guthaben bekommt. :) – jayphelps

Verwandte Themen