Angular HTTP Observabel

Peter P.

Cadet 3rd Year
Registriert
Mai 2017
Beiträge
32
Hallo Entwickler,

ich arbeite akutell mit dem Buch "Angular das umfassende Handbuch" von C. Höller

auf Seite 442 ist folgender Komponenten-Code dargestellt:

Code:
task : Task[]
....
deleteTask(task : Task){
  this.taskService.deleteTask(task).subscrib(_ => {
    this.tasks = this.tasks.filter(_task => {
      return _task.id !== task.id;
    });
  })
}

der TaskService ist per DI injeziert und wiefolgt implementiert

Code:
deleteTask(task : Task) : Observable<Response>{
  return this.http.delete('servername.de' + task.id);
}

Die Delet methode der Komponente ist mir schleierhaft. was bedeutet _ in der Pfeilfunktion und welcher wert steht in _task bzw. wo wird dieser zugewisen?

Vielen Dank

P.P
 
Nennt sich Arrow functions

Ein Beispiel

Code:
var func = (x, y) => { return x + y; };
var ergebnis = func(5,6);

In ergebnis steht die Zahl 11, weil 5 + 6 = 11
(x, y) sind die Parameter, man kann auch nur (x) oder x schreiben, aber nur wenn es nur einen Parameter gibt. Bei dir wäre x dann _ oder _task.
 
Zuletzt bearbeitet:
Am deutlichsten wird es wohl, wenn man es umschreibt:

Code:
deleteTask(task: Task){
    this.taskService.deleteTask(task).subscrib(subscriptionHandler);
}

subscriptionHandler(_) { //wobei der Parameter gar nicht genutzt wird..
    this.tasks = this.tasks.filter(filterFunction);
}

filterFunction(_task: Task) {
    return _task.id !== task.id;
}

Es ist einfach der Parameter, der der Pfeilfunktion von subscrib bzw. this.tasks.filter übergeben wird.

PS: gewöhne dir am besten niemals an, Namen wie _ zu nutzen.
 
Zuletzt bearbeitet:
Hallo,

vielen dank für eure Antworten.

Ich glaube nicht das es sich bei "_" um einen Parameter handelt!

Bei https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Pfeilfunktionen habe ich folgende Information gefunden:

Code:
// Paramterlose Pfeilfunktionen, welche visuell einfacher zu verstehen sind
setTimeout( _ => {
  console.log("I happen sooner");
  setTimeout( _ => {
    // deeper code
    console.log("I happen later");
  }, 1);
}, 1);

Es scheint sich also um eine Pfeilfunktion ganz ohne Parameter zu handeln. Daher wäre dies er Quelltext äquivalten dazu:

Code:
  deleteTask(task: Task) {
    this.taskService.deleteTask(task).subscribe( () => {
      this.findTasks(this.searchTerm.value);
    })
  }

Viele Grüße

Peter P.
 
Versuch macht schlau. Erstell dir eine Funktion, die solch eine Pfeilfunktion mit _ aufruft und übergib ihr dabei einen Wert.

Es wird der Wert drin stehen. Ganz sicher.
 
Jup, seh ich genauso wie Bagbag.
Wenn man nichts übergibt, z.B. wenn das subscrib nichts zurückgibt ist der Parameter schlicht leer.

Der Auto bevorzugt wohl bei fehlendem Parameter schlicht das um ein Zeichen kürzere "_ =>" gegenüber "() =>", ich nutze immer letzteres.

Edit: Ups, nicht gesehen, dass das Thema out-of-date ist :o
 
Zuletzt bearbeitet:
Zurück
Oben