Читать книгу 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.
Angular

Подняться наверх