async await apa benda ni?

Saya datang dari dunia Java, jadi lompat masuk TypeScript(TS) ni memang seronok, it feels home. It feels familiar. Kalau korang datang dari dunia Java, nak belajar bahasa baru pasal Oracle dan Larry Ellison dah mula tamak nak beli Ferrari kuning sebijik lagi pasal tak cukup pedang samurai yang dia ada, i recommend to jump into TS.

Kalau korang rajin layan TS, semestinya korang akan terlintas dengan async await.

Jadi nak explain pasal async await ini saya nak take a step back and explain how it works first.

Zaman dulu-dulu dalam JS, orang akan gunakan callbacks, which is cool BUT, not that cool pasal tak menyelesaikan masalah asynchronous dalam code korang. Kalau korang ada 10 benda nak buat asynchronously, mati nak buat 10 ‘chained’ callbacks, macamana nak debug? Satu callback silap, boleh pecah code korang.

Lepas tu datang pula Promises. Saya suka promises, dia kurang sikit pening, tapi kena buat ‘chained’ promises yang boleh mendatangkan masalah juga, i am guilty of this, pasal saya pernah buat juga chained promises ini, jadi saya tahu first hand kepeningan (dan kemuntahan) nak debug code ini. KESIMPULAN PROMISES: Kurang sikit pening berbanding callbacks, but still pening nonetheless.

Jadi di sinilah datangnya idea untuk menyelesaikan masalah asynchrony ini dengan async await.

Dalam pseudo codenya, mudah je:

async tengokGaban()

{

await siapHomework();

await mandi();

await solat();

await makan();

await tolongCuciPinggan();

await baruTengokSpaceCopGaban();

}

Dalam 8 line di atas, saya telah menyelesaikan running 6 function asynchronously tanpa perlu nak pecah kepala.

Tanpa async await, semua akan execute secara serentak.

Yelah takkan nak mandi dan solat sekali. Tak boleh, tak sah. Kena buat satu-satu. Mandi wajib dulu…baru boleh solat.

Kalau guna cara callback, korang kena callback satu persatu.

Cara promises pun sama, satu lepas satu.

Dengan async await tak perlu pening lagi brau. Kredit fb Razman Sarit