Heim > Web-Frontend > js-Tutorial > Hauptteil

Tut „.then(function(a){ return a; })' tatsächlich etwas für Versprechen?

Barbara Streisand
Freigeben: 2024-11-10 14:58:03
Original
535 Leute haben es durchsucht

Does

Hat „.then(function(a){ return a; })“ irgendwelche Auswirkungen auf Promises?

Bei der Arbeit mit Bluebird-Promises in Bookshelf kommt es bei Entwicklern oft zu Problemen Verwenden Sie ein ähnliches Muster wie das folgende:

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true})
    .then(function(model) {
      return model;
    });
};
Nach dem Login kopieren

Dieser Code wirft jedoch Fragen für diejenigen auf, die mit Versprechen nicht vertraut sind. Hat die Funktion then einen sinnvollen Einfluss auf das Gesamtverhalten des Codes? Könnte die folgende Implementierung ohne sie das gleiche Ergebnis erzielen?

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true});
};
Nach dem Login kopieren

Das Rätsel lösen

Der Kern der Sache liegt in dem an then übergebenen Funktionsparameter. Von diesem Argument wird erwartet, dass es den Rückgabewert des vorhergehenden Versprechens in der Kette erhält. Es scheint also, dass die Rückgabe a; Die Anweisung innerhalb der Then-Funktion ist im Wesentlichen eine No-Op-Anweisung, da sie lediglich das empfangene Argument unverändert durchläuft.

Warum die Then() beibehalten?

Trotz ihrer scheinbaren Redundanz dient die Then-Funktion ein Zweck in bestimmten Anwendungsfällen. Ein Beispiel wäre, wenn das zurückgegebene Versprechen in der Kette anders behandelt werden muss. Es könnte beispielsweise protokolliert, in JSON konvertiert oder auf benutzerdefinierte Weise verarbeitet werden. Ein weiterer Vorteil besteht darin, dass die then-Funktion eine Fehlerbehandlung ermöglicht, obwohl dies je nach verwendeter Promise-Bibliothek auch durch done erreicht werden könnte.

Best Practices

Im Allgemeinen ist es ratsam, nur dann verwenden, wenn es wirklich erforderlich ist. Unnötige Funktionen können die Codebasis unnötig komplexer machen und das Fehlerpotenzial erhöhen. Als allgemeine Faustregel gilt: Integrieren Sie es nur dann, wenn das Ergebnis oder der Fehler des zurückgegebenen Versprechens explizit geändert oder verarbeitet werden muss.

Das obige ist der detaillierte Inhalt vonTut „.then(function(a){ return a; })' tatsächlich etwas für Versprechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage