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

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

Die Syntax import.defer() verhält sich wie die reguläre Syntax import(), mit dem Unterschied, dass sie ein deferred module namespace object erzeugt. Das Modul und seine Abhängigkeiten werden im Voraus abgerufen und verknüpft, aber ihre synchrone Auswertung wird aufgeschoben, bis auf die Eigenschaften des Namespace zugegriffen wird.

Weitere Informationen zur aufgeschobenen Auswertung, einschließlich ihrer Interaktion mit Top-Level-await, finden Sie in der Deklarationsform import defer.

Syntax

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

import.defer() ist 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 eager ausgewerteten Top-Level-await-Abhängigkeiten mit einem deferred module namespace object 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 außerdem abgelehnt, wenn ein eager ausgewertetes Modul einen Fehler auslöst. Fehler aus Auswertungen, die aufgeschoben bleiben, werden stattdessen synchron durch die Namespace-Operation ausgelöst, welche die Auswertung startet.

Beispiele

Verwendung von import.defer()

Hinweis: Es ist garantiert, dass das Abwarten des resultierenden Promise niemals versehentlich eine exportierte then-Methode aufruft – ein Fallstrick, der mit dem regulären module namespace object verbunden ist –, weil das deferred module namespace object 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 sofort, 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