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()

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die import.defer()-Syntax verhält sich wie die reguläre import()-Syntax, gibt jedoch ein verzögertes Modul-Namespace-Objekt zurück. Das Modul und seine Abhängigkeiten werden vorab geladen und verknüpft, ihre synchrone Auswertung wird jedoch aufgeschoben, bis auf Eigenschaften des Namespace zugegriffen wird.

Weitere Informationen zur verzögerten Auswertung, einschließlich ihres Zusammenspiels mit await auf oberster Ebene, finden Sie unter 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 mit einem verzögerten Modul-Namespace-Objekt erfüllt wird, nachdem der Modulgraph geladen und verknüpft wurde und alle sofort ausgewerteten Abhängigkeiten mit await auf oberster Ebene vollständig ausgewertet wurden.

Wie bei der regulären import()-Syntax wird das Promise zurückgewiesen, wenn das Modul oder seine Abhängigkeiten nicht geladen, geparst oder verknüpft werden können. Es wird auch zurückgewiesen, wenn ein sofort ausgewertetes Modul eine Ausnahme auslöst. Fehler aus einer Auswertung, die aufgeschoben bleibt, werden stattdessen synchron durch die Operation auf dem Namespace ausgelöst, die die Auswertung anstößt.

Beispiele

import.defer() verwenden

Hinweis: Es ist garantiert, dass beim Abwarten des zurückgegebenen Promise niemals versehentlich eine exportierte then-Methode aufgerufen wird – ein Fallstrick beim regulären Modul-Namespace-Objekt –, 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

Spezifikation
Deferred Imports Evaluation
# sec-left-hand-side-expressions

Browser-Kompatibilität

Siehe auch