W tym samouczku dowiesz się o słowach kluczowych async / await w JavaScript na podstawie przykładów.
Użyj async
słowa kluczowego z funkcją, aby wskazać, że funkcja jest funkcją asynchroniczną. Funkcja async zwraca obietnicę.
Składnia async
funkcji to:
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Tutaj,
- name - nazwa funkcji
- parametry - parametry przekazywane do funkcji
Przykład: funkcja asynchroniczna
// async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f();
Wynik
Funkcja asynchroniczna.
W powyższym programie async
słowo kluczowe jest używane przed funkcją, aby wskazać, że funkcja jest asynchroniczna.
Ponieważ ta funkcja zwraca obietnicę, możesz użyć metody łączenia w następujący sposób then()
:
async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));
Wynik
Funkcja asynchroniczna 1
W powyższym programie f()
funkcja jest rozwiązywana i then()
metoda zostaje wykonana.
JavaScript czeka na słowo kluczowe
Słowo await
kluczowe jest używane wewnątrz async
funkcji w celu oczekiwania na operację asynchroniczną.
Składnia do użycia await to:
let result = await promise;
Użycie opcji await
wstrzymuje funkcję asynchroniczną, dopóki obietnica nie zwróci wartości wyniku (rozwiązania lub odrzucenia). Na przykład,
// a promise let promise = new Promise(function (resolve, reject) ( setTimeout(function () ( resolve('Promise resolved')), 4000); )); // async function async function asyncFunc() ( // wait until the promise resolves let result = await promise; console.log(result); console.log('hello'); ) // calling the async function asyncFunc();
Wynik
Obietnica rozwiązana cześć
W powyższym programie Promise
tworzony jest obiekt, który zostaje rozwiązany po 4000 milisekund. Tutaj asyncFunc()
funkcja jest zapisywana przy użyciu async
funkcji.
Te await
oczekiwania kluczowych dla obietnicy być kompletne (postanowienie lub odrzucić).
let result = await promise;
W związku z tym hello jest wyświetlane tylko wtedy, gdy wartość obietnicy jest dostępna dla zmiennej wynikowej.
W powyższym programie, jeśli await
nie jest używany, hello jest wyświetlane przed rozwiązaniem Promise.

Uwaga : można używać await
tylko wewnątrz funkcji asynchronicznych.
Funkcja async umożliwia wykonanie metody asynchronicznej w pozornie synchroniczny sposób. Chociaż operacja jest asynchroniczna, wydaje się, że jest wykonywana w sposób synchroniczny.
Może to być przydatne, jeśli w programie jest wiele obietnic. Na przykład,
let promise1; let promise2; let promise3; async function asyncFunc() ( let result1 = await promise1; let result2 = await promise2; let result3 = await promise3; console.log(result1); console.log(result1); console.log(result1); )
W powyższym programie await
czeka na wypełnienie każdej obietnicy.
Obsługa błędów
Korzystając z async
funkcji, piszesz kod w sposób synchroniczny. Możesz także użyć tej catch()
metody, aby złapać błąd. Na przykład,
asyncFunc().catch( // catch error and do something )
Innym sposobem na obsłużenie błędu jest użycie try/catch
bloku. Na przykład,
// a promise let promise = new Promise(function (resolve, reject) ( setTimeout(function () ( resolve('Promise resolved')), 4000); )); // async function async function asyncFunc() ( try ( // wait until the promise resolves let result = await promise; console.log(result); ) catch(error) ( console.log(error); ) ) // calling the async function asyncFunc(); // Promise resolved
W powyższym programie użyliśmy try/catch
bloku do obsługi błędów. Jeśli program zostanie uruchomiony pomyślnie, przejdzie do try
bloku. A jeśli program wyrzuci błąd, przejdzie do catch
bloku.
Aby dowiedzieć się więcej o try/catch
szczegółach, odwiedź JavaScript JavaScript try / catch.
Korzyści z używania funkcji asynchronicznej
- Kod jest bardziej czytelny niż użycie wywołania zwrotnego lub obietnicy.
- Obsługa błędów jest prostsza.
- Debugowanie jest łatwiejsze.
Uwaga : te dwa słowa kluczowe async/await
zostały wprowadzone w nowszej wersji JavaScript (ES8). Niektóre starsze przeglądarki mogą nie obsługiwać async / await. Aby dowiedzieć się więcej, odwiedź stronę Obsługa przeglądarki JavaScript async / await.