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
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.
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:
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
- Leitfaden zu JavaScript-Modulen
import()import defer