A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/Symbol.species below:

Promise[Symbol.species] - JavaScript | MDN

Promise[Symbol.species]

Baseline Widely available

Die statische Zugriffseigenschaft Promise[Symbol.species] gibt den Konstruktor zurück, der verwendet wird, um Rückgabewerte aus Promise-Methoden zu konstruieren.

Warnung: Die Existenz von [Symbol.species] erlaubt die Ausführung von beliebigem Code und kann Sicherheitslücken erzeugen. Außerdem erschwert sie bestimmte Optimierungen erheblich. Entwickler von Engines untersuchen, ob dieses Feature entfernt werden sollte. Vermeiden Sie es, sich darauf zu verlassen, wenn möglich.

Syntax Rückgabewert

Der Wert des Konstruktors (this), auf dem get [Symbol.species] aufgerufen wurde. Der Rückgabewert wird verwendet, um Rückgabewerte aus Promise-Verkettungsmethoden zu konstruieren, die neue Promises erstellen.

Beschreibung

Die Eigenschaft [Symbol.species] gibt den Standardkonstruktor für Promise-Objekte zurück. Unterklassenkonstruktoren können sie überschreiben, um die Konstruktorzuweisung zu ändern. Die Standardimplementierung ist im Grunde:

// Hypothetical underlying implementation for illustration
class Promise {
  static get [Symbol.species]() {
    return this;
  }
}

Aufgrund dieser polymorphen Implementierung würde [Symbol.species] von abgeleiteten Unterklassen standardmäßig auch den Konstruktor selbst zurückgeben.

class SubPromise extends Promise {}
SubPromise[Symbol.species] === SubPromise; // true

Promise-Verkettungsmethoden — then(), catch() und finally() — geben neue Promise-Objekte zurück. Sie erhalten den Konstruktor, um das neue Promise zu konstruieren, durch this.constructor[Symbol.species]. Wenn this.constructor undefined ist, oder wenn this.constructor[Symbol.species] undefined oder null ist, wird der Standard-Promise()-Konstruktor verwendet. Andernfalls wird der vom this.constructor[Symbol.species] zurückgegebene Konstruktor verwendet, um das neue Promise-Objekt zu konstruieren.

Beispiele Species in gewöhnlichen Objekten

Die Symbol.species-Eigenschaft gibt die Standard-Konstruktorfunktion zurück, die für Promise der Promise-Konstruktor ist.

Promise[Symbol.species]; // [Function: Promise]
Species in abgeleiteten Objekten

In einer Instanz einer benutzerdefinierten Promise-Unterklasse, wie MyPromise, ist die MyPromise-Species der MyPromise-Konstruktor. Sie könnten dies jedoch überschreiben wollen, um in Ihren abgeleiteten Klassenmethoden übergeordnete Promise-Objekte zurückzugeben.

class MyPromise extends Promise {
  // Override MyPromise species to the parent Promise constructor
  static get [Symbol.species]() {
    return Promise;
  }
}

Standardmäßig würden Promise-Methoden Promises mit dem Typ der Unterklasse zurückgeben.

class MyPromise extends Promise {
  someValue = 1;
}

console.log(MyPromise.resolve(1).then(() => {}).someValue); // 1

Durch das Überschreiben von [Symbol.species] werden die Promise-Methoden den Basistyp Promise zurückgeben.

class MyPromise extends Promise {
  someValue = 1;
  static get [Symbol.species]() {
    return Promise;
  }
}

console.log(MyPromise.resolve(1).then(() => {}).someValue); // undefined
Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4