Transcript for:
Memahami Asinkronus dalam JavaScript

Oke, mungkin kalian sering mendapatkan masalah di javascript ketika berjalan belajar pertama kali javascript dengan yang namanya Sebuah fungsin yang kalian panggil tapi mereturn sebuah pendingan, pendingan promise kayak gitu-gitu Jadi kita kali ini akan belajar yang namanya asinkronus di javascript kurang lebih seperti apa Kita contohkan dari yang asinkronus dulu ya sebelum gue jabarkan asinkronus versi sederhana versi gue yang gue punya di otak gue ya Ntar gue jelasin Kalau secara teori seperti biasa yang paling fix kalian bisa cek Wikipedia sendiri tapi kalau ini versi penjabaran gua dan pemahaman gue aja di javascript lebih kayak gimana pertama contoh sini gue punya function satu disini nge-log cuman munculin satu gini terus gue punya tiga biji misalnya gitu 1 2 dan 3 oke toga lagi apaan tuh akhir tiga hai hai Kalau kita running ini satu persatu Ini biar ada jalannya Pas kalian cobain juga Biar ada gambarannya kurang lebih Nanti perbedaannya kayak gimana gitu Kita panggil function 1 dulu disini Function 2 Function 3 gitu kan Kalau kita run disini Maka sesuai ya 1, 2, 3 gitu Cuman kalau misalkan Ini gue taruh Di dalam function 2 Sebuah Apa ya Function bawaannya browser Atau bawaannya javascript Gue lupa Set timeout Yang mana set timeout itu berjalan secara sinkronus Di balik layar ini Jadi kalau gue taruh sini set timeout Dengan durasi 3000 millisecond Alias 3 detik Console log nya gue masukin sini Hai nanti ke output yang berjalan apa Apakah 123 yang mana sebelumnya itu berjalan seiring dengan urutan step by step yang kita ketik disini 1122 33 walaupun ini kita ketik 123 disini tapi karena di tengah-tengah di function yang kedua itu berjalan secara asinkronus maka kalau kita run 132 nya datang tiga detik kemudian ya gitu ngerti enggak ini sinkronis nih function kedua sinkronis nih njs 132 nya nanti Nah contoh kayak gini biar enggak pusing gue tambahin disini konsolok function2 mau dieksekusi Hai gini biar kalian ada gambaran Satu, fungsin 2 mau di eksekusi Tiganya udah ke eksekusi duluan, duanya nanti Jadi bisa dikatakan asinkronus secara paling mudah bagi gue untuk menjabarkannya adalah Sebuah fungsin yang bisa berjalan secara paralel dalam pengeksekusiannya dengan fungsin-fungsin lainnya Jadi dia tuh tetap jalan walaupun lo masih mengeksekusi hal-hal lain Contoh kayak di antrian kayak gitu-gitu Kalau digambar kurang lebih kayak begini ya pak ya Sebentar Contoh disini tuh ada ya standar lah kayak antrian-antrian begituan ya Contohnya Ini contoh ada manusia, ada dapur lah gitu. Taruh ini dapur. Ini lobby pemesanan. Di sini misalnya nih. Apa sebutnya teh? Kasir ya gitu. Kasir untuk mesen misalnya nih. Di sini ada orang-orang lah nih. Contohnya di sini ada orang-orang antri. Ini satu, ini dua, ini tiga, empat, lima. Si nomor satu ini pesen. Sret. Burger satu katanya. Terus kasir bilang sini. Sret. Burger satu katanya Dapur belum kelar nih Lagi pada masak, masak, masak Ini mesen, Pak Kasir Burger dua Kata Kasir, gak bisa dong, ditolak Kenapa Pak Kasir? Karena kita tunggu dulu nih Pesanan satu aja belum kelar katanya Oh yaudah oke, kata nomor dua Nungguin nih nomor dua nih Nomor tiga gak bisa juga, harus beres dulu nomor dua Epek nomor 1 udah kelar nih Satu kasih, seret Langsung Kasir bilang, eh bro nomor 2 Mau gak, jadi gak beli burgernya Enggak ah, pada bubar ini semua Karena sistemnya kayak begituan, males banget Harus yang satu kelar dulu sampe beres Baru dilayanin gitu, untuk bayarnya Untuk pesen apa-apanya Nah kalau berjalan secara asinkronus Ini gue hapus dulu, bentar Ada orang mengantri disini Satu, ini ceritanya nomor 1 nih Pak Kasir, pesen dong Ini nomor 1 ya, ini 2, ini 3, ini 4 Kata kasir pesan apa? Burger satu biji, oke Nomor satu diproses Progress Si antrian kedua Bilang ke kasir Saya juga mau pesan, bisa gak? Bisa dong Oke, kasir progress gini Shred Dua Dan begitu juga seterusnya. Yang ini juga bisa, ini juga bisa sampai masuk ke antrian sini. Misalnya kalau yang satu mah mesin burger 100 biji yang jumbo super jumbo super susah bikinnya. Yang nomor dua itu cuma bikin tahu gejerot misalnya. Paling cepat contohnya. Nomor dua itu proses pengerjaan masaknya itu paling cepat nomor dua disini. Maka dikembalikan lah yang dua dulu. Walaupun si kasir. Nomor 1 itu pesen duluan Eh si customer nomor 1 itu pesen duluan Tapi karena tugasnya Di dapur Yang nomor 2 itu tugasnya mudah Untuk buat tahu gejolot itu cuma potongin tahu Masukin cengek, kasih kuah, balikin Jadi yang pertama Dapet barangnya adalah Si nomor 2 masuk sini Nomor 2 pergi, bye bye Udah gak ada disini Sisa 1, 3, 4 Yang mana yang paling cepat dieksekusi nih Oh si 3 ternyata 3 bye bye Nah si 1 karena paling banyak pesenan dan segala macemnya Dia ya Terpaksa lama dulu nunggu gitu kan Empat udah nanti terakhir Kayak gitu Jadi kurang lebih bisa berjalan secara paralel Secara gambaran Sederhananya seperti itu Nah kalau di contoh programnya Tadi kayak gini untuk simpelnya Kalau studi kasus nyatanya nanti seperti apa bang? Atau mungkin karena ini didelay bang 3000 milisekund Ya pasti dia bakal telat loh bang Ya karena itu berjalan secara asinkronus Kalau gak percaya ini kita buktiin Gak didelay pake milisekund Kita kasih 0 karena secara bawaan function ini sudah dari sono nya sinkronus artinya berjalan secara paralel jadi yang akan diprioritaskan tetap yang ini, ini akan masuk sebagai progress dulu jadi kalaupun kita kasih delay nya 0 detik ya pak ya, gue running lagi tetap lihat, 1 function 2 mode eksekusi, 3 Duanya baru kembali Jadi mau detiknya berapapun itu sama aja Kenapa? Karena function ini berjalan Secara sinkronis di balik layar Itu materi pertama supaya kalian bisa cukup paham Tentang yang begini-beginian Yang mungkin susah untuk ditangkep Karena gue pun dulu belajar kayak ginian Susah untuk nangkepnya Sampai akhirnya nanti di industri itu ada banyak hal yang seperti ini Dan mengerti sendiri ternyata Oh kurang lebih ini ya Kita pakai ini tuh ketika ini Kita akan coba simulasikan hal-hal yang lebih nyata lagi Disini contoh gue punya Function function login misalnya right dan gua punya function get user gitu di sini gue punya token yang mana tokennya ceritanya ketika login akan mengenerate gitu jadi gua bikin sebuah random token aja ini apa ya sebagai biar mempermudah kita aja dalam mengoding untuk mengetahui tentang perundus aja lah ya met random kali Hai segini aja Cukup lah gini juga lalu disini akan meriten sesuatu yang isinya tuh objek Hai taruh objeknya adalah token kita akan mendapatkan token ketika login gitu ya token sini kita kasih username misalnya parameter kita akan kembalikan lagi gitu Nah kalau kita panggil di sini ini biarin dulu kayak gini kosong hai hai Hai loginnya kita panggil login kan nampung parameter username jadi kita kirim parameter username sini misalnya daya Afriza Odea underscore Afriza kita console.log ya, si loginnya misalnya const user sama dengan login lalu console.log user jadi ada user yang login dengan nama dafrijal, lalu kita munculkan dia ngapain, dia dapet apa kita running muncul token 3 sekian sekian sekian username dafrijal berhasil terus disini ada get user dengan syarat misalnya disini syaratnya harus ada tokennya contoh aja ini mah misalkan untuk get user kita butuh token untuk mengakses function ini dan nanti fungsinya ini bakal balikin sebuah API key contohnya yang API key isinya misalnya random juga atau X key gini aja deh X key 123 misalnya Jadi kalau user panggil function ini, harusnya ini akan keluar. Tapi dengan syarat dia harus punya token dulu. Jadi disini gue bakal kasih validasi. Jika tokennya ada, misalnya gitu. Maka lakukan pengembalian nilai ini. Jika tidak ada, maka yaudah diem aja. Kalau gue panggil get user dengan token yang ada di dalam user sini. user.token ya konsol.lo sorry-sorry kita bikin dulu variabel konsol API key sama dengan kayak begini konsol.log API key harusnya kita bisa dapetin API key nya ya ingin dapet API keynya Kenapa karena kita passing di get user user tokennya tapi kalau kita enggak passing kayak gini Hai kayak gini kosongan kalau kita running undefined karena memang syaratnya harus mempunyai token gitu ceritanya ini tokennya harus nyambung dari yang sini ya jadi tanya gitu Jadi kalau kita masukin user.com karena sudah token di sini kita udah punya ya kan console.com user.com kita punya disini kalau kalian lihat user tokennya ini token ini dipakai untuk mengenerate sebuah API key jadi kita dapetin API ini right logit kita punya satu fungsin lagi nih pak ya function get misalnya get pictures gini get picture syaratnya harus punya API key jadi nyambung-nyambung kayak begitu ini kita biar simulasi asinkronisnya enak if api key kalau ada misalkan maka kita return sesuatu hal yaitu si gambar-gambar saya ada picture jadi sini gua bikin kumpulan gambar nih cons picture sama dengan contohnya gini aja deh satu.jpg dua.jpg tiga.jpg ini tuh Ayo kita return picture nya Oke kalau kita mau lanjutin berarti tinggal panggil fungsinya kita bikin dulu satu on apa ya get user picture misalnya cat pictures dengan syaratnya adalah epik disini kita udah punya epik ya dan epik ada di dalam epik jadi ini kita bisa bungkus kayak lalu kita masukin epi key nya disini epi key harusnya ini huruf gede, mohon maaf kayak gini, betul kalau kita console.get user picture nya kita running Jadi awal kita generate tokennya dari login, terus kita dapetin API key dari get user, terus kita dapetin pictures dari get pictures dengan syarat yang beruntun dari atas ke bawah. Login syaratnya username, get user syaratnya token yang diambil dari function login setelah berhasil loginnya, get picture syaratnya API key yang didapetin ketika function get user berhasil dieksekusi. Nah sekarang ketika login di dunia nyatanya itu kan ada... delay ya, ada waktu jeda proses ketika kita request ke server lalu servernya merespon jadi anggaplah disini gue pakai set timeout untuk memanipulasi waktu, ceritanya ada waktu jeda 200ms ketika kita mau mengembalikan respon dari server ke ini entah itu dari sisi servernya yang jauh atau kayak bagaimana, pokoknya ada jeda pasti ada proses untuk login ini jadi kalau kita running lagi sekarang Terima kasih. rusak, kenapa rusak? karena ini ada jeda dulu kita pas eksekusi yang get user disini ini user.token aja udah gak bisa didapetin karena token gak muncul karena disini saya timeout asinkronus pake optional key pun gak bisa juga karena ini berjalan secara asinkronus, kalau kita bedah ini gue hapus dulu ya ketika lo console.log atau lo bikin sebuah function baru untuk user yang mana usernya itu bisa login dengan username dea underscore afrijal kita kontrolnya console.log usernya doang gini clear undefined disini gue kasih console.log memvalidasi data atau processing memvalidasi data gini contoh kalau kita run processing memvalidasi data tapi undefined karena kecepatan pak ini berjalan secara asinkronus fungsinya keburu berhenti ketika kita panggil console.log user ini dipanggil langsung berhenti duluan padahal ini harus nunggu dulu caranya adalah kita bisa pakai beberapa hal Yang pertama kita tambahin disini asing await Bisa tapi gue coba kasih tau dulu yang namanya Callback Jadi supaya lo bisa dapetin nilai ini Lo bisa pasang callback di function ini Oke gue akan taruh disini callbacknya Sebagai parameter Lalu yang gue return itu bukan return Kayak begini tapi callbacknya yang akan gue kasih nilai Begini Callback gue kasih nilai Dan ini bukan lagi kayak begini tapi pake Buka tutup seperti ini Ya Oke Jadi parameter ini mempunyai sebuah nilai Nilainya adalah token dan username Tahapannya adalah disini lo harus spacing lagi Satu hal Ini kita gak bisa main kayak gini lagi nih Gak bisa Kita harus tangkap nilainya itu lewat sebuah parameter Karena nilai dari Nilai akhir dari token dan username itu dikirim ke sebuah callback Yang mana callbacknya adalah sebuah parameter Parameter yang ada disini itu bisa kita akses dengan cara function Hai gitu tanpa nama pun lo akan bisa mendapatkannya dan disini lu tinggal coba konsol dulu console.log getting data Hore contoh clear njs getting data Hore Oke getting data Hore processing validasi data Oke ini bisa masuk artinya di dalam machine ini punya sebuah callback ini jadi kalau kita kasih di sini result Atau response Lalu kita masukkan response sebagai console.log Lalu kita masukkan disini Kelar Misalnya Njs Processing data, memvalidasi data Kelar, tokennya keluar Username-nya keluar Ini bisa diakses lewat yang namanya callback Oke cukup paham gak sampai sini? Jadi kayak muter gitu loh Gue sambil sebat ya, aus Ngomong ngulu Oke kita udah dapetin ini Kita masukin variable misalnya Cons user sama dengan login Kita console log usernya disini User adalah User Bisa bang kayak gini? Cobain user adalah undefined gak bisa kayak begitu pak karena kita mainannya callback gak bisa kayak gini jadi kita kalau mau lanjut ke yang get user bagaimana sok dijawab dulu sambil gue menyebat-menyebat dulu kalau mau ngambil isi get user bagaimana tokennya udah punya nih di dalam respon tokennya udah punya nih udah kejawab Kita harus mainin ini di dalam Function ini Kalau kita pakai metode callback Seperti ini Karena disini kita sudah punya yang namanya response Kalau lu ambil isian dari response Yang mana isiannya itu ada token dan ada username Gue langsung ambil ke dalam Token disini Sama dengan response Lalu gue console log disini Token Token Kalau gue running Token Hai gue dapetin tokennya ya Nah karena kita di dalam sini udah punya variabel token ini ya kita bisa ke get user di dalam sini solo tinggal panggil get user disini oke dan masukin tokennya di sini terus luar konsol ini ini masih bisa dimasukin kedalam variabel Pak cons misalnya epik ya pqp user token kalau gua console log epiknya ini balik lagi ke metode tadi hai hai Hai hey Hai epiknya masih dapet Kenapa masih dapet Kenapa enggak pakai callback callback and ya masih dapet Hai karena proses pengambilan atau pe pembuatan epiknya pun tidak berjalan secara sinkronis Pak kalau kita kasih disini setaimot Hai ya sini gua kasih setan moda hai hai Hai set timeout karena memang ada waktu kan secara aslinya kan kayak gitu ada kasih waktu dulu gitu loh gua return dalam waktu taruh dia 500 milisek untuk mendapatkan API key itu butuh waktu 500 milisek Pak jadi kalau kita running lagi sekarang yang tadinya kita dapat undefined Hai fokasi sini lagi ya console.com processing API key Hai nah Hai oke yang ini processing token user now Hai Oke kalau kita coba nggak akan bisa tetap Hai processing token user now dapat berhasil tapi pas epiki undefined Oke nggak masuk nih kesini enggak masuk mana eh salah salah ini maaf di atas disini processing token user now aman processing API key now API keynya nggak dapat cukup paham sampai sini berarti apa yang harus kita lakukan yang harus kita lakukan adalah karena dia sudah ada sinkronus nya maka disini kita harus bikin callback untuk cat user callback ubah returnnya jadi callback kasih buka tutup seperti ini parenthesis bahasa inggrisnya itulah gua lupa yang artinya kita mau manggil itu tinggal get user kasih datanya apa data token dan kita bikin function disini console log Hai epik iya kan bikinnya ada di dalam respons lagi sini response Hai cabaraning berhasil ya kelihatan API key nya ada di sini right kita bikin lagi di sini cons API key biar masuk langsung ke dalam responnya jadi disini tinggal console.log API key njs xkey 123 keynya Oke tahapan berikutnya get picture get picture itu kita bisa jalanin disini get picture dengan API key eh sorry disini dengan API key ya karena API key punya ini enggak asinkronus jadi ini akan berjalan new return pictures loh loh loh loh picturesnya sebentar Hai pictures nya konsolok Sorry kok kurang konsolok cons.pix sama dengan console.log pic njs dapat 123 data gambarnya tapi tetap lagi-lagi karena kita butuh proses untuk mendapatkan gambar ke server itu ada waktu jadi kita kasih setemot sini hai hai taruhlah karena gambar cukup berat taruh kita 1500 ms baru dia akan mereturn sebuah picture oke, ini masih sama nih gue run undefine gimana caranya? lakukan hal yang sama lagi kalau callback callback ganti return jadi callback kasih kayak gini Hai di sini nggak bisa lagi kayak gini lalu harus get pictures kasih API key kasih function dalam sini dapat dari spawnnya lu bikin pemanggilannya pictures pictures semen dengan response console log pic cersnya Sorry misalkan disini gua ganti objek picture jadi pic So disini kita manggilnya tinggal pick Disini juga tinggal pick Kalau sekarang kita running Ada Tapi dia jeda 1500ms Contoh Kalau kita kasih ini biar lebih enak nih Jadi tau memproses yang mana Processing pictures now Coba njs lagi Processing token user API key Processing picture now dapet Cuman pertanyaannya adalah Apa iya harus sampai melorot seperti ini? Ini disebutnya nested callback Function di dalamnya ada ini, di dalamnya ada function lagi, ada function lagi, function Cara sederhananya lo bisa pakai yang namanya apa promis juga lu bisa pakai namanya promis Jadi kalau ini gua konversi gua akan bikin satu file baru di sini gua pindahkan ini ke sini dulu gua kembalikan ini ke kosongan lagi kita bakal hilangin callback yang ada di sini nih gua hilangin Sorry mana callbacknya kita hilangin awasin awasin dan ini gua hapus lagi Oke ini kita return seperti biasa Hai gini lagi ya enggak ada callback ya sekarang ya tapi kita pakai yang namanya promise Pak jadi sini gua akan return promise seperti ini promise menangkap dua parameter ada sukses ada file begitu Hai kek lalu setempat ini gua masukkan ke dalamnya So, sukses ini akan menghasilkan isian yang harusnya keluar gitu. Kalau failed ya, kalau gagal ke-failed. Jadi, set timeout ini, ini misalkan di dalam sini ada validasi nih. If username tidak sama dengan, sama dengan kayak gini, dea underscore afrizal, maka gue akan filetkan ini, sorry, wrong, data. Hai gitu tapi jika tidak oke else atau anggap salah gini aja sukses Ayo kita kirimnya apa tadi token dan juga username ya atau tokennya doang ya Yaudah ini aja kalau kita coba running ini dengan cara kayak tadi konjur sama dengan login dengan username dia underscore Afriza kan harusnya muncul ke sukses ya ke sukses ini karena kan username tidak sama dengan dia Friza maka file-edit Sorry orang data harus dia Friza ceritanya kalau kita Solo user nya akan terjadi promise pending Promise pending seperti itu Kenapa? Karena user itu ada di dalamnya lagi Kalau callback tadi disini function Kalau promise Promis-promisan itu kita pakai user.den User.den Kasih di dalamnya function Ini kayak callback lagi Cuman Kayak begini aja gitu terpisah Function gini Console.log disini Contohnya Eh kemana tadi Nah ini Kalau kita run Lalanya muncul Artinya di dalam function ini ada sesuatu Kita coba dulu X Apakah iya ada? X Ada tuh Dapat tokennya Berarti ini adalah response Sama kayak yang tadi Jadi ini kalau kita console.log response Sama tuh Dapat tokennya Ya gak? Nah kalau kita mau lanjutin yang kesini Ya sama juga Kita kasih return promise disini Hai Em ini ifnya di dalam sini ya oke bentar gua kasih return new promise dia punya sukses dan juga dia punya file-ed lalu disini dia punya function ya ini ini function ya ini ada kalau baiknya dua biji lu masukin di sini kalau tokennya ada maka nah ini tinggal kembaliin ke sukses Hai seperti ini suksesnya lalu jika tidak ada atau kita balikin aja deh if tidak token maka file-ed notoken inputed notoken notoken ya notoken aja ginilah sorry notoken cannot access Hai ini misalnya Hai kalau ada maka setan out sukses ke API blablabla Nah kalau kita manggil disini nggak kan bisa kita harus disini karena kita kan disini punya apa tadi constoken sama dengan Hai response sama aja kayak tadi lagi balik lagi gitu get get get get get apa tadi get user ya get user itu pakai token dot den balik lagi nih ke function lagi di sini bisa pakai row function atau function row function atau gimana tapi supaya nggak pusing taruh di sini function begini disini ada respon lagi, jadi terus-terus aja kayak gitu sama aja ini bikin lagi cons API key dari response jadi kalau lu console.log API keynya, njs ini, sorry ada error kenapa gua, ini jadi kalau error itu kita mesti pakai cache jadi file ini akan masuk ke cache sorry, so disini lu harus tambahin kayak cache R console.log R .message misalnya contoh coba ya tah itu enggak pakai .message jadi R doang kayak gini kita run sorry no token cannot access token, sorry undefined tadi tokennya itu kita nggak bisa passing ambil langsung destruktur seperti ini kita masih kasih objek di pas loginnya pas mereturn token kita harus kasih kayak begini Hai show sekarang harusnya kita bisa dapetin responnya ya responnya pikirnya dapet jadi ini gua buka lagi kita konsolok IPnya doang kalau kita njs lagi keynya dapat tinggal sekarang berarti get picture Nah itu tadi sekaligus simulasi yang file-nya ya Jadi kalau di promise itu kan ada dua ada sukses ada fail file-nya itu ter-eksekusi ketika nanti seperti hal-hal yang tidak terduga gitu Nah di sini pun lu bisa di user ini sini dan di sini catch Hai console.log R pusing-pusing lu kodingan yang lu ya ini hanya syaratnya diafrizzal tadi akan tereksekusi ini lancar-lancar aja ya lancar-lancar aja Hai tapi kalau di sini bukan dia Frizzal gua taruh sini satu detik sudah dia akan masuk ke kecik nih karena secara logik disini dia harus bernama dia Frizzal jika tidak bakal akan masuk ke file gitu Sorry uang data Jadi kalau gua ran harusnya ke Sorry uang data ya itu terjadi karena promisan ini punya dua callback sukses dan file jadi sesuai dengan logiknya akan masuk arah kemana Hai itu bakal kayak begini-begini terus nih Pak ini ke dalam lagi ke dalam lagi kena capek dan ini akan nested seperti yang tadi sama aja nah asing awet lah solusinya ini gua hapus lagi ya Hai asing awet menjadi sebuah solusi ketika ada sebuah apa function yang meriten sebuah promise pending ya Ini kan kalau kita langsung eksekusikan promise pending tuh kalau kita bikin kayak begini user sama dengan login dia Friza nggak bisa kan kalau di console.log tuh user Hai dan JS pending kita bikin satu function yang asinkronus asing function user Hai display misalnya Oke gua masukkan ini ke sini karena dia udah ada keyword asing disini so untuk memanggilan yang login dia kan promisi login nih ada pending pendingnya kita kasih keyword away artinya kita menunggu dulu sampai dia kelar eksekusi nanti akan dimunculkan ke console.log gitu kurang lebih so kita mesti panggil lagi di sini user display dah gini doang kalau kita run njs tokennya muncul oke ini kita bisa persingkat lagi nih karena kita udah yakin itu isiannya token kita bisa langsung sekarang Hai token terus untuk mendapatkan API key kita bisa langsung kayak gini sama dengan white ke get user dengan syarat token seperti ini kalau udah punya API kita punya syarat lagi di sini sebuah pictures ya sebuah pic yang mana tadi tuh pic ini kita return ya di sini ya picture jadi pic langsung await get pictures dengan syarat API key kurang lebih kayak gitu kalau kita console.log semuanya console.log misalnya gitu token Anda adalah token Hai epike Anda adalah Hai epike dan setelah g data picture nya pitch request gambar Anda berikut ini hasil request gambar berikut ini gitu Jadi kalau gua run sekarang Hai Amas itu jadi error Kenapa karena pitch itu ada something wrong tunggu pitch return ini masih return ini belum dikasih promise ya mohon maaf ini kita kasih promise di sini return new promise gampangnya caranya ya tadi kan kita pakai rovance nih rovance ini bisa pakai enggak rovance juga bisa sama aja jadi yang paling mudah sih row function seperti ini tinggal masukin if nya ke sini gitu ini kasih sukses atau fail kalau orang lain biasanya tuh reject dan apa satu lagi resolve ya resolve and reject gitu gue sih sukses dan valid kurang lebih kayak gitu biar gampang aja dibacanya gitu resolve reject right Jadi jika API key nya ada maka sini kita balikin lagi logiknya jika tidak ada API key maka valid no API key cannot access misalnya gitu ya tapi jika tidak maka kita akan return ke sukses ini Hai seperti itu so kalau kita running lagi Hai token Anda adalah sekian epi Anda adalah segini hasil request gambar Anda berikut 123 itu Hai red cukup paham tentang asinkronus di javascript dari pengimplementasian yang kita lakukan hari ini bagaimana hai hai kalau misalkan kita enggak pakai ini ya di sininya untuk ngecek validasi yang error-errornya gitu itu biasanya kita harus pakai try and catch ketika kita mau mengeksekusi await-awaitan ini jadi masuk ke catchnya itu disini try terlebih dahulu terus lu catch disini catch R oke console.log R nya try ini Hai begini kurang lebih kurang rapi ya mohon maaf bentar Oke jadi gini ya kalau kita run masih aman tapi kalau kita ada yang salah nggak masukin token misalnya disini, kita run no token, cannot access kalau kita masukin token tapi kita namanya salah kayak begini sorry wrong data, oke kalau kita bener tokennya bener tapi API keynya salah misalnya atau nggak pakai, no API key, cannot access Alright, kurang lebih kayak gitu aja tentang asinkronus di javascript Ini durasinya udah lumayan lama, semoga kalian cukup paham tentang hal yang beginian Semoga bisa mudah dicerna Kalau misalkan ada hal yang secara teori gue salah ucap, tolong diralat aja di kolom komentar ntar tapi gua berikan faktanya kurang lebih seperti ini implementasinya dan nanti di dunia kerja pun akan banyak hal-hal seperti ini dan apa ya pengimplementasinya kadang-kadang beragam beragam logik dan algoritma ini salah satu contoh doang sampel right sampai jumpa di video berikutnya