‫Instruktur: Sekarang mari kita mulai
‫belajar bagaimana menyelesaikan panggilan balik neraka dengan menggunakan janji.
‫Dan kita akan memulai dengan menggunakan
‫janji untuk permintaan
‫muncul agen alih-alih panggilan balik.
‫Dan ini akan berhasil karena perpustakaan agen super sebenarnya
‫memiliki dukungan untuk janji di luar kotak, jadi
‫kita bisa menggunakannya di sini.
‫Untuk fungsi node, yang berasal dari paket node internal seperti
‫Read File, kita sebenarnya harus membuat sendiri janjinya,
‫dan kita akan melakukannya nanti di kuliah berikutnya, atau
‫lebih.
‫Tapi untuk
‫saat ini, saya ingin Anda belajar bagaimana menepati
‫janji dan baru kemudian bagaimana membangunnya.
‫Oke, sekali lagi kita akan
‫mulai dengan perpustakaan agen
‫super dan lebih khusus lagi dengan metode get di sini.
‫Karena metode ini di sini sebenarnya mengembalikan janji.
‫Jadi tanpa terlalu detail, untuk saat ini, janji
‫pada dasarnya mengimplementasikan
‫konsep nilai masa depan.
‫Jadi pada dasarnya, nilai yang kami harapkan untuk diterima
‫beberapa waktu di masa depan, jadi
‫itu seperti kami mengatakan, "Hei, server," atau "Hei,
‫API, tolong ambilkan saya gambar anjing acak" di latar belakang dan
‫biarkan saya tahu kapan Anda siap "dan kemudian
‫kembalikan data itu. " Oke?
‫Sehingga gambar acak itu adalah nilai yang
‫kita harapkan suatu saat nanti.
‫Dan itulah jenis permintaan yang kami
‫lakukan menggunakan perpustakaan agen super dalam
‫contoh ini.
‫Benar.
‫Dan metode get yang kita gunakan lagi akan
‫secara otomatis dan segera mengembalikan janji segera setelah kita memulai
‫permintaan.
‫Jadi janjinya belum memiliki nilai, karena
‫server sebenarnya masih mendapatkan data dari server
‫secara asinkron di latar belakang tetapi janji itu
‫segera tersedia dan pada dasarnya menjanjikan
‫kita bahwa itu akan mendapatkan beberapa data kembali di
‫masa depan.
‫Oke, apakah itu masuk akal?
‫Dan keadaan janji itu, jadi pada
‫awalnya, adalah janji yang tertunda.
‫Jadi masih pending, masih belum
‫kembali dengan data apa pun, oke?
‫Jadi di sini, pada titik ini, kami sudah memiliki janji
‫bahwa kami dapat bekerja dengannya.
‫Sekarang yang perlu kita lakukan adalah mengkonsumsinya,
‫yang pada dasarnya berarti kita menunggunya kembali
‫dengan datanya.
‫Dan untuk melakukan itu, kami menggunakan metode then di atasnya.
‫Jadi, yang kita lakukan hanyalah menggunakan then and then
‫di sini, kita melewatkan fungsi callback.
‫Fungsi panggilan balik ini kemudian akan dipanggil
‫segera setelah janji selesai melakukan tugasnya dan telah kembali
‫dengan data.
‫Dan data itu kemudian tersedia sebagai argumen untuk
‫panggilan balik itu.
‫Sekarang saya suka menyebutnya sebagai hasil.
‫Jadi, sekali lagi dalam fungsi panggilan balik yang kita miliki
‫di sini kita kemudian memiliki data yang tersedia.
‫Jadi mari kita ambil semua ini di sini dan
‫masukkan ke dalam fungsi panggilan balik ini
‫dan singkirkan ini.
‫Jadi kita tidak lagi membutuhkan
‫itu, dan menyelamatkannya.
‫Sekarang Anda mungkin berpikir, kami masih menggunakan
‫panggilan balik di sini, dan ya, itu memang benar.
‫Jadi ini tidak terlihat seperti perubahan besar untuk saat
‫ini, tetapi setelah kami mengubah seluruh contoh di
‫sini menjadi janji,
‫Anda akan melihat dampak besar yang akan terjadi pada kode kami.
‫Jadi pada dasarnya jika kita memiliki banyak janji, kita akan
‫dapat menghubungkan panggilan balik ini ke satu sama
‫lain alih-alih menumpuknya.
‫Yang sudah merupakan peningkatan besar.
‫Sekarang satu hal yang saya lupa
‫sebutkan sebelumnya adalah bahwa janji segera setelah kembali dengan
‫data disebut janji yang diselesaikan.
‫Jadi pada awalnya itu adalah janji yang
‫tertunda dan ketika berhasil mendapatkan
‫data, itu adalah janji yang diselesaikan.
‫Namun, janji yang diselesaikan mungkin tidak selalu
‫berhasil karena mungkin ada kesalahan.
‫Jadi kami mengatakan bahwa janji yang telah diputuskan
‫dapat dipenuhi atau ditolak.
‫Janji yang dipenuhi sebenarnya memiliki hasil yang ingin
‫kita gunakan.
‫Sedangkan janji yang ditolak adalah ketika ada kesalahan.
‫Jadi ingatlah situasi yang kita alami
‫sebelumnya di mana kita memiliki jenis anjing yang salah.
‫Jadi dalam hal ini, kami
‫mengalami kesalahan, dan kami menangani kesalahan itu menggunakan potongan kode ini di sini.
‫Oke.
‫Nah masalahnya dengan metode this
‫then di sini sebenarnya hanya menangani janji yang terpenuhi
‫tetapi tidak melakukan apa-apa jika ada kesalahan,
‫karena untuk itu, kami sebenarnya memiliki metode lain.
‫Jadi mekanisme lain untuk menangani itu.
‫Dan itu adalah metode menangkap.
‫Jadi setelah metode then, kita
‫dapat menghubungkan metode lain yang disebut catch.
‫Oke.
‫Jadi yang ini akan dipanggil jika ada kesalahan.
‫Jadi di sini, kita sebenarnya memiliki akses ke objek kesalahan itu.
‫Jadi sekarang mari kita lanjutkan, ambil
‫potongan kode ini, dan taruh
‫di
‫sini, dan sekarang kita bisa menyingkirkan ini.
‫Karena sebenarnya dalam metode
‫then ini, kami tidak
‫memiliki informasi apakah ada kesalahan atau tidak
‫karena hanya dipanggil jika janji berhasil.
‫Jadi jika itu adalah janji yang terpenuhi.
‫Oke, jadi ini bagus untuk memisahkan kedua kasus
‫ini secara otomatis untuk kita.
‫Jadi alih-alih memiliki penanganan aneh yang
‫kita miliki
‫sebelumnya, kita cukup menulis semua logika untuk kasus yang berhasil
‫yang merupakan yang paling
‫biasa karena kita biasanya mengharapkan semuanya bekerja
‫dengan baik, tetapi jika ada kesalahan, kita
‫dapat memasukkan beberapa logika lain di sini ke penangan kesalahan ini di sini.
‫Jadi kami memisahkannya dengan baik.
‫Mari kita ubah lagi di sini.
‫Berikan satu ini simpanan lain untuk menjalankannya lagi.
‫Jadi di sini kami memiliki Not Found,
‫dan Anda melihat bahwa sebenarnya ia memasukkan metode tangkap ini di sini
‫dan tidak melakukan hal apa
‫pun yang ada dalam metode ini kemudian.
‫Sekarang lanjutkan dan perbaiki ini di sini,
‫tutup,
‫simpan yang ini,
‫dan ini dia.
‫Jadi begitulah cara kita mengkonsumsi janji.
‫Jadi kami mulai dengan metode ini di sini
‫yang mengembalikan janji dan seterusnya, kami
‫dapat merantai metode kemudian
‫yang pada dasarnya menangani kasus yang berhasil,
‫dan kemudian pada akhirnya, kami juga merantai metode
‫tangkap yang menangani yang tidak berhasil, jadi yang ditolak, janji.
‫Tapi seperti yang saya katakan sebelumnya, jenis ini masih terlihat
‫seperti sebelumnya.
‫Benar?
‫Jadi kami masih memiliki fungsi panggilan balik ini di
‫sini sehingga semua fungsi panggilan balik
‫ini dan juga di sini di dalam metode kami, kami memiliki fungsi
‫panggilan balik ini dari writeFile.
‫Jadi mari kita lanjutkan dan perbaiki itu di video berikutnya.