Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

import.defer()

Die Syntax import.defer() verhält sich wie die reguläre Syntax import(), führt jedoch zu einem verzögerten Modul-Namespace-Objekt. Das Modul und seine Abhängigkeiten werden im Voraus abgerufen und verknüpft, ihre synchrone Auswertung wird jedoch verzögert, bis auf die Eigenschaften des Namespace zugegriffen wird.

Weitere Informationen über die verzögerte Auswertung, einschließlich ihrer Interaktion mit await auf oberster Ebene, finden Sie in der Deklarationsform import defer.

Syntax

js
import.defer(moduleName)
import.defer(moduleName, options)

import.defer() ist eine spezielle Syntax (eine „Meta-Eigenschaft“) und keine Methode eines import-Objekts.

Parameter

Siehe import().

Rückgabewert

Gibt ein Promise zurück, das nach dem Laden und Verknüpfen des Modulgraphen sowie nach Abschluss der Auswertung aller vorzeitig ausgewerteten Abhängigkeiten mit await auf oberster Ebene mit einem verzögerten Modul-Namespace-Objekt erfüllt wird.

Wie bei regulärem import() wird das Promise abgelehnt, wenn das Modul oder seine Abhängigkeiten nicht geladen, geparst oder verknüpft werden können. Es wird auch abgelehnt, wenn ein vorzeitig ausgewertetes Modul einen Fehler auslöst. Fehler aus einer Auswertung, die weiterhin verzögert bleibt, werden stattdessen synchron durch die Namespace-Operation ausgelöst, die die Auswertung anstößt.

Beispiele

Verwendung von import.defer()

Hinweis: Es ist garantiert, dass das Abwarten des resultierenden Promise niemals versehentlich eine exportierte then-Methode aufruft – eine Fallstrickeigenschaft des regulären Modul-Namespace-Objekts –, da das verzögerte Modul-Namespace-Objekt niemals eine Eigenschaft namens then bereitstellt.

js
const ts = await import.defer("typescript");

function compilePath(path) {
  // Evaluation of the typescript module subgraph starts here
  const program = ts.createProgram([path], {});
}

Destrukturieren Sie den zurückgegebenen Namespace niemals unmittelbar, da dies die Auswertung auslöst:

js
const { createProgram } = await import.defer("typescript");
// The typescript module has now been evaluated.

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilität

Siehe auch