2017-05-04 1 views
2

Ich möchte einen neuen Betreiber zu schaffen, und ich finde in der documentation, dass eine der Möglichkeiten, so etwas wie dies zu tun ist:Rx js Verständnis der Lift Methode

class MyObservable extends Observable { 
    lift(operator) { 
    const observable = new MyObservable() 
    observable.source = this; 
    observable.operator = operator; 
    return observable; 
    } 

    // put it here .. or .. 
    customOperator() { 
    /* do things and return an Observable */ 
    } 
} 

// ... put it here... 
MyObservable.prototype.mySimpleOperator = mySimpleOperator; 

Ich verstehe nicht, was die lift Methode und was hier vor sich geht, kann bitte jemand helfen?

+0

Der ursprüngliche GitHub-Vorschlag erklärt es gut: https://github.com/ReactiveX/RxJS/issues/60 – cartant

Antwort

11

lift wird die ganze Zeit intern in RxJS 5 verwendet. Das Prinzip von lift ist, dass Sie ein neues Observable vorbereiten, das nach dem subscribe die Ereignisse in der vom Operator definierten Weise weiterleitet. Es gibt ein gutes Video darüber von Paul Taylor (https://youtu.be/QhjALubBQPg?t=19m). Aufzug ist ein sehr grundlegender Baustein.

Anstatt eine neue Klasse zu erstellen, die Observable erweitert, können Sie auch einfach den Operator selbst erstellen. Die Nutzer der Bediener kann es dann durch Schreiben rufen:

Observable.of(1, 2, 3) 
    .lift(new MyCustomOperator) 
    .subscribe() 

Das bedeutet, niemand zu lernen hat, dass noch ein anderer Teilnehmer der beobachtbare API zur Verfügung steht, sondern sieht, dass es etwas an anderer Stelle definiert ist.

Idealerweise könnte man

someObservable::myCustomOperator(); 

schreiben, aber leider ist der bind-Operator sein könnte lange weg/wird nie passieren, so die .lift(operator) wie die deutlichste/saubere Art und Weise zu sein scheint.

+0

Ich hätte es nie als Ersatz für den Bind-Operator gedacht, mit den Informationen, es ist einfach? –