‫Instruktur: Dalam video ini, kami
‫akan menjanjikan fungsi membaca file dan menulis file.
‫Yang berarti bahwa kita akan membuatnya sehingga
‫mereka mengembalikan janji
‫alih-alih kita meneruskan fungsi panggilan balik ke dalamnya.
‫Jadi jika Anda mau, pada dasarnya ini adalah fungsi
‫membaca file yang mengembalikan
‫janji dan hanya menerima nama file, tidak ada panggilan balik.
‫Jadi mari kita lakukan persis seperti itu.
‫Jadi, kita akan membuat fungsi read file pro.
‫Jadi pro untuk janji karena lagi-lagi
‫itu mengembalikan janji.
‫Dan kemudian yang kita lakukan hanyalah memasukkan
‫nama file dan seperti yang kita katakan, mengembalikan sebuah janji.
‫Jadi, kembalikan janji baru.
‫Jadi kami menggunakan konstruktor janji di
‫sini yang diperkenalkan ke dalam bahasa dengan ES6.
‫Jadi sebelum ES6 seperti ES5, ES4 dan
‫semua versi
‫sebelumnya, tidak ada dukungan untuk janji di JavaScript.
‫Tapi mereka mengubahnya di ES6
‫dan membuat bahasanya jauh lebih baik dalam hal itu.
‫Jadi tentang JavaScript asinkron.
‫Sekarang konstruktor janji ini
‫di sini mengambil apa yang disebut fungsi
‫pelaksana, yang akan dipanggil segera saat janji dibuat.
‫Dan fungsi ini akan mengambil dua argumen jadi
‫selesaikan dan tolak.
‫Jadi putuskan dan tolak,
‫tapi untuk saat ini jangan khawatir untuk
‫mereka, kita akan membicarakannya sebentar lagi.
‫Untuk saat ini mari kita fokus pada fungsi pelaksana
‫ini sendiri karena di sinilah kita sebenarnya melakukan
‫semua pekerjaan asinkron ini.
‫Dalam hal ini file baca berfungsi.
‫Jadi di sinilah kita akan memanggil fs. readfile dengan
‫nama file yang diteruskan
‫dan kemudian fungsi panggilan balik biasa, oke.
‫Jadi error dan datanya, jadi sama
‫seperti sebelumnya.
‫Jadi perlu diingat bahwa
‫kami tidak benar-benar mengubah fungsi file baca,
‫kami hanya membuat fungsi baru
‫yang di balik layar tentu saja masih menjalankan
‫fungsi file baca bawaan tetapi kemudian mengembalikan
‫janji sehingga kami dapat
‫menggunakan janji
‫sebagai gantinya dari fungsi panggilan balik.
‫Oke.
‫Jadi kita memiliki fungsi membaca file di
‫sini yang akan melakukan
‫tugasnya dan ketika sudah siap akan kembali dengan data.
‫Dan sekarang di
‫sinilah fungsi tekad dan penolakan berperan.
‫Karena kedua argumen ini yang
‫tersedia di fungsi eksekutor keduanya adalah fungsi.
‫Sekarang memanggil fungsi resolve
‫pada dasarnya akan menandai janji sebagai berhasil
‫sehingga
‫terpenuhi, dan mengembalikan nilai sukses dari janji.
‫Jadi mari kita lakukan itu.
‫Jadi kita sebut menyelesaikan dengan data.
‫Jadi variabel apa pun yang kita masukkan ke dalam
‫fungsi resolve adalah apa yang
‫nantinya akan tersedia sebagai argumen dalam metode then, oke?
‫Jadi data ini di sini akan menjadi
‫nilai bahwa janji ini kembali kepada kita, oke.
‫Itu mungkin terdengar agak membingungkan, bukan?
‫Jadi sekali lagi, apa pun yang kita masukkan ke dalam fungsi ini
‫di sini, ke dalam
‫fungsi resolve, adalah hasil dari
‫janji yang akan tersedia di handler saat itu.
‫Sekarang di
‫sisi lain, kita juga bisa menandai janji sebagai
‫ditolak jika ada kesalahan, oke.
‫Dan kami melakukannya dengan
‫memanggil, seperti
‫yang mungkin bisa Anda tebak, fungsi penolakan.
‫Jadi, jika ada kesalahan dan
‫ini mirip dengan yang kami lakukan sebelumnya.
‫Jadi jika ada kesalahan
‫di sini, maka panggil fungsi tolak.
‫Dan apapun yang kita lewati
‫ini akan menjadi kesalahan
‫yang nantinya tersedia di metode catch.
‫Jadi, dalam satu ini di sini.
‫Oke?
‫Jadi mari kita berikan string
‫di sini, saya tidak dapat menemukan file itu, beberapa emoji di
‫sini mungkin untuk membuatnya lebih menonjol di
‫konsol kami. log, oke?
‫Dan, oke.
‫Itu sebenarnya sudah.
‫Jadi, mari kita tinjau lagi di sini.
‫Jadi kami membuat file
‫baru, di sana kami akan memberikan nama file.
‫Jadi argumen ini.
‫Dan semua yang kita lakukan di sini adalah untuk mengembalikan janji ini.
‫Janji ini mengambil satu fungsi pelaksana, jadi yang
‫ini di
‫sini, di mana kami melakukan pekerjaan asinkron kami.
‫Dalam hal ini di sini tentu saja fs
‫kami. file baca.
‫Kemudian jika kami mendapatkan data kami dengan cara
‫yang berhasil, kami
‫memanggil fungsi resolve dengan nilai resolve.
‫Dan jika
‫ada error kita panggil fungsi reject, oke?
‫Jadi sekarang mari kita benar-benar menggunakan ini dalam praktik.
‫Baca file pro, kami memberikan
‫nama file kami.
‫Jadi yang satu ini tentu
‫saja dan hanya itu.
‫Jadi ini sekarang akan mengembalikan janji.
‫Dan seperti sebelumnya
‫kita dapat menggunakan metode then kita untuk itu.
‫Oke dan jadi argumen data ini di sini
‫akan persis seperti yang kami kembalikan dari janji
‫jika itu berhasil.
‫Jadi, dengan tekad ini.
‫Jadi sekarang file anjing kami
‫di sini berisi
‫labrador dan data ini di sini akan menjadi labrador.
‫Dan itu kemudian tersedia di penangan
‫kami di sini.
‫Tapi tentu saja tidak harus memiliki nama yang sama,
‫saya juga bisa menyebutnya seperti
‫hasil atau sesuatu yang tidak masalah, oke?
‫Oke, jadi sekarang mari kita ambil semua ini
‫dan taruh di sini.
‫Oke.
‫Singkirkan semua ini, simpan dan itu
‫akan menjalankannya.
‫Sekarang kita mendapatkan kesalahan itu di
‫sini sehingga data tidak ditentukan.
‫Itu karena saya mengubahnya di sini menjadi hasil.
‫Jadi mari kita kembali dan mengubahnya menjadi data karena di
‫sini kita memiliki data
‫dan di sini
‫kita memiliki data dan dengan cara ini saya
‫tidak perlu melanjutkan dan mengubah semua nama variabel ini.
‫Berikan save lagi dan
‫ini dia.
‫Jadi itu berhasil, Anda lihat?
‫Kami benar-benar mendapatkan breed,
‫yang masih labrador
‫dan kali ini dari janji kami, oke.
‫Jadi, ini benar-benar berhasil.
‫Jadi fungsi pro file baca
‫kami sekarang mengembalikan
‫janji dan data di sini kemudian tersedia di penangan kami saat itu.
‫Bagus, jadi ini sudah bekerja dan
‫kita bisa membuatnya jauh
‫lebih baik
‫dan kita akan melakukannya tapi untuk saat ini saya
‫juga ingin menjanjikan fungsi file tulis ini di sini.
‫Jadi pada dasarnya, lakukan hal yang
‫sama seperti yang kita lakukan dengan fungsi read file.
‫Sekarang, jika Anda sudah tahu sedikit
‫tentang no js, mungkin Anda berpikir bahwa sebenarnya ada node
‫fungsi yang secara otomatis menjanjikan fungsi untuk kita.
‫Tapi tentu saja saya ingin menunjukkan kepada
‫Anda di sini bagaimana janji
‫benar-benar bekerja dan
‫bagaimana kita membangunnya dan itulah mengapa saya melakukan semua ini di sini, oke.
‫Jadi saya benar-benar ingin Anda belajar tentang janji, bukan
‫hanya bagaimana kita mengkonsumsinya tetapi
‫juga bagaimana membangunnya.
‫Dan itulah mengapa saya melakukannya dengan cara ini.
‫Jadi, tulis file dan sebagai janji.
‫Dan yang ini sebenarnya tidak hanya membutuhkan
‫nama file tetapi juga data yang harus ditulis ke file tersebut.
‫Tapi kemudian logika di sini sangat mirip.
‫Jadi sekali lagi, kami mengembalikan janji baru,
‫di sana kami memiliki fungsi
‫pelaksana kami yang mengambil keputusan dan penolakan sebagai argumen.
‫Dan ini adalah jenis
‫nama standar Jadi putuskan dan
‫tolak, Anda dapat memanggil mereka apa pun
‫yang Anda inginkan tetapi ini adalah jenis standar, oke.
‫Jadi fs,
‫tulis
‫file, kami meneruskan
‫file, data, dan kemudian fungsi panggilan balik.
‫Dan sekarang sesuatu yang sangat mirip dengan
‫sebelumnya, jadi jika
‫ada kesalahan, panggil fungsi penolakan dan berikan
‫beberapa pesan di sana.
‫Tidak dapat menulis
‫file, sekali lagi dengan emoji ini di sini untuk
‫membuatnya lebih menonjol dan jika semuanya berfungsi
‫dengan baik, maka selesaikan saja.
‫Sekarang kita tidak memiliki data yang benar-benar untuk dilewatkan di sini kan?
‫Jadi kita hanya akan menyampaikan beberapa
‫string acak seperti mengatakan sukses, oke.
‫Jadi sebuah janji
‫tidak selalu harus mengembalikan nilai yang berarti.
‫Dalam hal ini, yang benar-benar kami coba
‫lakukan di
‫sini adalah menulis file yang tidak benar-benar mengembalikan nilai yang berarti.
‫Jadi kita sekarang siap untuk menggunakan fungsi yang dijanjikan ini
‫tetapi sebelum
‫kita melakukannya, mari kita benar-benar menerapkan
‫rantai yang saya bicarakan sebelumnya.
‫Jadi sekarang,
‫kita sebenarnya masih memiliki panggilan balik di dalam panggilan
‫balik di dalam panggilan balik, bukan?
‫Jadi kita punya ini,
‫yang memiliki panggilan balik ini.
‫Dan kemudian di sana ada penangan lain yang
‫memiliki panggilan balik lain di dalamnya.
‫Jadi itu tidak benar-benar mengubah apa pun, bukan?
‫Alih-alih, kami ingin merantai penangan ini di sini.
‫Dan rahasia untuk
‫melakukan itu adalah membuat setiap pawang mengembalikan janji baru.
‫Jadi bagaimana kita akan melakukannya?
‫Nah, ingat bahwa fungsi ini di sini mengembalikan janji.
‫Jadi yang harus kita
‫lakukan adalah mengembalikan janji itu dari penangan pertama ini.
‫Biarkan saya menunjukkan itu kepada Anda.
‫Jadi kami mengatakan kembali superagent. dapatkan dan kemudian
‫string dan itu sekarang menjadi janji, oke.
‫Dan kemudian kami benar-benar menutup fungsi panggilan
‫balik ini di sini dan menyambungkan metode ini lalu ke kanan.
‫Coba simpan, sekarang kami memiliki beberapa kesalahan di
‫sini dan itu di baris 40.
‫Mari kita singkirkan ini di sini
‫dan oke.
‫Itu mengubah pemformatan di sini untuk
‫kami lagi yang
‫lebih cantik dan kemudian kami sebenarnya sudah membuatnya berfungsi di sini.
‫Jadi mengapa ini bekerja lagi?
‫Nah, tentu saja fungsi yang kita buat
‫di awal ini mengembalikan sebuah janji.
‫Maka dari itu kita bisa menggunakan metode then.
‫Kami kemudian membuat fungsi panggilan balik ini yang
‫ada di dalamnya lagi mengembalikan janji.
‫Dan seperti itu kita
‫kemudian dapat merantai penangan berikutnya pada itu.
‫Jadi variabel hasil ini
‫di sini kemudian akan menjadi nilai yang diselesaikan
‫dari janji ini yang dikembalikan dari penangan sebelumnya, oke?
‫Masuk akal?
‫Sekarang untuk melangkah lebih jauh, kami
‫akan melanjutkan
‫dan menggunakan fungsi pro file tulis kami di sini sekarang juga.
‫Dan karena kami ingin terus merantai metode
‫maka kami akan mengembalikannya lagi.
‫Jadi kembali, tulis file pro pass dengan
‫nama file, yang ini, datanya
‫...
‫Dan itu sebenarnya.
‫Oke, jadi kita tidak membutuhkan semua ini di sini lagi, mari kita
‫komentar saja untuk saat ini.
‫Singkirkan ruang ini di
‫sini dan kemudian di sana kita bisa merantai pawang berikutnya.
‫Jadi, dan ingatlah bahwa di
‫sini kita tidak benar-benar memiliki nilai penyelesaian yang berarti.
‫Jadi, kami tidak ingin
‫ada argumen untuk fungsi panggilan balik
‫ini di sini yang ingin kami lakukan hanyalah mencatat string ini, bukan?
‫Jadi sekarang kita benar-benar bisa menyingkirkan
‫ini dan oke.
‫Jadi, di sini kita melihat
‫sekarang bahwa itu sebenarnya sudah bekerja.
‫Dan sekali lagi trik
‫untuk dapat merantai semua metode ini
‫di sini adalah mengembalikan janji sebelum memanggil masing-masing.
‫Jadi yang ini di sini jelas mengembalikan janji di sini
‫sehingga kita bisa menghubungkan metode then di atasnya.
‫Kemudian potongan kode ini
‫di sini
‫akan mengembalikan janji sehingga kita dapat menggunakannya.
‫Kemudian potongan kode ini
‫akan mengembalikan janji sehingga kita dapat menggunakannya lagi, oke?
‫Jadi itulah rahasianya.
‫Berikan simpanan lagi
‫dan di sini kita melihat bahwa rasnya masih labrador.
‫Kami melihat bahwa ini di sini adalah tautannya, mari
‫ke sini dan konfirmasikan bahwa ini di
‫sini memang sama dengan ini.
‫Dan itu berhasil menulis string ke file teks menggunakan
‫fungsi file tulis yang kami janjikan, oke.
‫Dan pada akhirnya kita memiliki penangan kesalahan ini.
‫Dan keindahannya di sini adalah bahwa untuk semua rantai
‫ini kemudian penangan
‫pada akhirnya, kita hanya membutuhkan satu penangan tangkapan.
‫Jadi satu fungsi menangani
‫kesalahan yang berasal dari salah satu dari tiga janji, oke.
‫Mari kita sebenarnya hanya mencatat kesalahan ke konsol
‫dan mari kita coba,
‫misalnya, mengubah file ini di sini.
‫Sebenarnya bukan filenya,
‫tapi saya akan mengubah nama file di sini, simpan
‫dan sekarang kita lihat saya tidak dapat menemukan file itu.
‫Jadi dari mana itu berasal?
‫Itu muncul
‫di sini dari memanggil fungsi tolak, oke?
‫Jadi kami memiliki kesalahan di sini karena kami tidak dapat
‫menemukan file dan kami memanggil fungsi penolakan.
‫Dan fungsi penolakan itu kemudian akan menandai janji ini di sini
‫jadi ingat ini adalah janji.
‫Ini akan menandainya sebagai ditolak.
‫Dan oleh karena itu, fungsi catch dipanggil.
‫Dan kemudian kami mencatat kesalahan itu ke konsol.
‫Dan hasilnya adalah apa yang dapat Anda lihat di sini.
‫Oke, mari kita pasang kembali sekarang
‫berfungsi.
‫Sekarang mari masuk ke file,
‫buat anjing yang tidak ada
‫dan sekarang, oh, di sini kita memiliki kesalahan besar yang aneh dan
‫itu karena kami hanya mencatat seluruh kesalahan dan bukan
‫pesan kesalahan seperti yang kami lakukan sebelumnya tetapi tidak
‫tidak masalah.
‫Sekarang simpan di sini
‫sekarang, pasang
‫kembali dan baiklah.
‫Jadi sekarang semuanya bekerja dan
‫kami menyingkirkan bentuk segitiga yang kami
‫miliki dalam kode
‫kami dan sekarang memiliki apa yang disebut struktur datar dari janji rantai.
‫Jadi sekali lagi ini cara yang
‫lebih mudah untuk dikelola dan saya harap Anda
‫dapat mulai menghargai itu dan juga lebih
‫logis untuk berpikir dan bernalar tentang kode seperti ini.
‫Sekarang, dalam
‫kuliah berikutnya kita akan benar-benar mengambil satu
‫langkah lebih jauh dan membuatnya
‫lebih mudah dibaca dan digunakan.
‫Jadi tetap tunggu untuk itu.