![](https://images.gutefrage.net/media/user/Mensch4/1720753873407_nmmslarge__0_0_1024_1024_3ee6d102f9fff3b8eb89a9336cca61ab.png?v=1720753873000)
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Antwort
Guten Abend,
ich bin in einer asyncronen funktion aber nicht in der höchsten modulebene weswegen ich kein await nutzen kann
Ich denke, du irrst dich - die Bedeutung asynchroner Funktionen liegt in der Verwendung des await-Keywords. Die Verwendung von await ist meines Wissens nach nur in CommonJS-Modulen auf höchster Modulebene nicht möglich. Bei ES-Modules sieht die Sache schon ganz anders aus.
Wie dem auch sei, @regex9 hat dir die verschiedenen Möglichkeiten schon genannt. Unter Verwendung eines Closures etwa folgendermaßen:
function sleepWithCallback(callback)
{
setTimeout(() => callback(), 3000);
}
sleepWithCallback(() => console.log('after 3 seconds!'));
Oder alternativ unter Verwendung einer Promise:
function sleepAsPromise()
{
return new Promise(resolve => {
setTimeout(() => resolve(), 3000);
});
}
// via callback
sleepAsPromise().then(() => console.log('after 3 seconds!'));
// via await (ES-Modul)
await sleepAsPromise();
console.log('after 3 seconds!');
// via await (CommonJS-Modul)
(async () => {
await sleepAsPromise();
console.log('after 3 seconds!');
})();
Der gekapselte Aufruf von setTimeout wartet dabei 3 Sekunden, bis die Callback-Funktion im ersten Argument aufgerufen wird.
LG