Ich versuche den Unterschied zwischen RXJS Rupfen und Karte zu verstehen.RXJS Unterschied zwischen Pluck und Map
Kann mir jemand dabei helfen?
Geschätzt
Ich versuche den Unterschied zwischen RXJS Rupfen und Karte zu verstehen.RXJS Unterschied zwischen Pluck und Map
Kann mir jemand dabei helfen?
Geschätzt
Wie @ mgm87 sagte Sie eine Operation mit map
ausführen können. Auf der anderen Seite nimmt pluck
nur einen Wert.
Zum Beispiel mit der Karte kann man so etwas tun:
this.http.get('...some api url to get a user...')
.map(response => response.json())
.map(user => user.age > 18 ? 'major': 'minor')
.do(isMajorOrMinor => console.log(isMajorOrMinor))
So können Sie Ihre Daten in der Kette auch bedingt manipulieren.
ABER, für mich ist einer der großen Unterschiede, dass map is typed
. Was bedeutet, wenn Sie einige Daten haben wir sagen:
interface IUser {
name: string;
age: number;
dogs: IDog[];
}
Und Sie irgendwann ein Benutzer erhalten, von dem man seine Hunde erhalten möchten:
user$
.map(user => user.dogs)
.do(dogs => ...) // here, you do NOT need to precise (dogs: IDog[]) because Typescript will make a type inference
Und das ist, warum ich immer bin Verwenden der Karte sogar um nur einige Daten zu "pflücken".
Sie sind sehr ähnlich, aber wie ich es verstehe, mit einer Reihe Karte arbeitet während zupfen die Werte von einem Objekt nimmt.
Sie denken an Array.map, nicht an Observable.map. Auch https://meta.stackexchange.com/q/225370/248731 – jonrsharpe
Map kann eine Operation auf jedem ausgesendeten Wert durchzuführen. http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map https://www.learnrxjs.io/operators/transformation/map.html
// value from observable = 10
map(x => 10*x)
// value from map = 100
Zupfen einfach nimmt eine der verschachtelten Eigenschaften jedes ausgesendeten Wert. http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-pluck https://www.learnrxjs.io/operators/transformation/pluck.html
// value from observable = {p = 10, w = 100}
pluck('p')
// value from pluck = 10
Die docs sagen
Pluck: Wie Karte, aber bedeutete nur für jedes emittierten Objekt eines der verschachtelten Eigenschaften Kommissionierung.
Deshalb sagen wir, Sie haben
[{ name: 'Joe', age: 30, job: { title: 'Developer', language: 'JavaScript' },
{ name: 'Sarah', age: 35 }]
und Sie möchten eine Liste aller Berufsbezeichnungen.
map
Verwendung wäre eine Art Schmerz (wegen der NULL-Zulässigkeit von job
), aber mit ‚rupfen‘ Sie können pluck('job', 'title')
schreiben und es wird den Baum für job.title
Suche durchlaufen - und wird nicht fehlschlagen, wenn job
null ist.https://www.learnrxjs.io/operators/transformation/pluck.html
Haben Sie die Dokumentation lesen:
Beispiel aus genommen? Probiere sie aus? Welche spezifische Frage hast du noch? – jonrsharpe
Dies ist eine absolut gültige Frage, die es wert ist, diskutiert zu werden. –