import.defer()
Die Syntax import.defer() verhält sich wie die reguläre Syntax import(), führt jedoch zu einem deferred module namespace object. Das Modul und seine Abhängigkeiten werden im Voraus abgerufen und verknüpft, ihre synchrone Auswertung wird jedoch aufgeschoben, bis auf die Eigenschaften des Namespace zugegriffen wird.
Weitere Informationen zur aufgeschobenen Auswertung, einschließlich ihrer Interaktion mit await auf oberster Ebene, finden Sie in der Deklarationsform import defer.
Syntax
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 früh ausgewerteten Abhängigkeiten mit await auf oberster Ebene 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 ebenfalls abgelehnt, wenn ein früh ausgewertetes Modul eine Ausnahme auslöst. Fehler aus einer Auswertung, die aufgeschoben bleibt, werden stattdessen synchron durch die Namespace-Operation ausgelöst, welche 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 – ein Fallstrick, der mit dem regulären module namespace object verbunden ist –, da das deferred module namespace object niemals eine Eigenschaft namens then verfügbar macht.
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:
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
- JavaScript-Module – Leitfaden
import()import defer