Heim  >  Artikel  >  Web-Frontend  >  Ist „.then(function(a){ return a; })“ in Promise Chains notwendig?

Ist „.then(function(a){ return a; })“ in Promise Chains notwendig?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 00:08:02492Durchsuche

Is

Versprechen verketten: „.then(function(a){ return a; })“ verstehen

Bei der Arbeit mit Versprechenketten ist es so Es kommt häufig vor, dass Anweisungen wie „.then(function(a){ return a; })“ auftreten. Diese Syntax erscheint im Code:

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

Es stellt sich die Frage: Ist diese Funktion funktional identisch mit der direkten Rückgabe von fetch(), ohne das zusätzliche „.then()“?

Die Antwort: Ein No-Op

Ja. „.then(function(a){ return a; })“ ist praktisch eine No-Operation (no-op) für Versprechen. Es gibt das gleiche Versprechen zurück, verhält sich auf die gleiche Weise und kann äquivalent aufgerufen werden.

Begründung:

Versprechen werden zur Darstellung asynchroner Vorgänge verwendet. Wenn ein Versprechen aufgelöst wird, gibt es sein Ergebnis über die Funktion „Dann“ an das nächste Versprechen in der Kette weiter. Wenn die „Dann“-Funktion jedoch einfach die Eingabe zurückgibt, fügt sie der Kette keinen Wert hinzu.

Warum der Autor sie möglicherweise verwendet hat:

Die Die Einbeziehung des scheinbar redundanten „.then()“ kann auf eines von zwei zurückzuführen sein Gründe:

  • Fehler: Es ist möglich, dass der Autor einfach einen Fehler gemacht oder den Zweck von Versprechen falsch verstanden hat.
  • Mangelndes Verständnis: Der Autor könnte fälschlicherweise geglaubt haben, dass jedes Versprechen eine „Dann“-Funktion benötige, auch wenn dies nicht der Fall war alles.

Fazit:

In den meisten Fällen ist „.then(function(a){ return a; })“ unnötig und kann es auch sein weggelassen werden, ohne das gewünschte Verhalten zu beeinträchtigen. Es handelt sich um einen Platzhalter, der keinen Zweck erfüllt und zur besseren Klarheit des Codes entfernt werden sollte.

Das obige ist der detaillierte Inhalt vonIst „.then(function(a){ return a; })“ in Promise Chains notwendig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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