Читать книгу Angular - Manfred Steyer - Страница 52
async und await
ОглавлениеSeit ECMAScript 2017 können Sie Funktionen, die einen Promise liefern, mit dem Schlüsselwort async markieren:
async function timeout2(time: number): Promise<number> {
return new Promise((resolve, reject) => {
if (time < 0) {
// Send error!
reject(`Don't be that negative!`);
return;
}
setTimeout(() => {
resolve(time);
}, time);
});
}
Interessant wird es erst, wenn Sie solche Funktionen mit dem Schlüsselwort await anstoßen:
async function caller() {
let result;
try {
result = await timeout2(1000);
console.log('Phase 1', result);
result = await timeout2(1000);
console.log('Phase 2', result);
result = await timeout2(1000);
console.log('Phase 3', result);
result = await timeout2(1000);
console.log('Phase 4', result);
}
catch (error) {
console.error('error', error);
}
}
caller();
Die Zeilen nach dem await-Aufruf registriert ECMAScript als Fulfillment-Handler. catch-Blöcke werden hingegen ohne weiteres Zutun zum Rejection-Handler. Dank dieser Schlüsselwörter können wir den Quellcode nun sequenziell und ohne zusätzliche then- und catch-Aufrufe gestalten.
Bitte beachten Sie, dass das Schlüsselwort await nur innerhalb von mit async gekennzeichneten Operationen verwendet werden darf. |