‫Instruktur: Selamat datang kembali!
‫Dalam video ini, kita akan membaca file dan
‫menulis dua file seperti sebelumnya, tetapi dengan cara yang tidak sinkron.
‫Mari kita tambahkan beberapa komentar di sini sebelumnya.
‫Jadi, ini
‫adalah pemblokiran, cara sinkron, dan kemudian, kami akan
‫melakukan latihan dengan cara non-pemblokiran, asinkron.
‫Jadi, kami tidak akan
‫melakukan hal yang sama, kami hanya
‫akan menemukan beberapa jenis latihan gila lainnya di sini.
‫Jadi, untuk membaca file secara asinkron, cara
‫kerjanya seperti ini.
‫Sekali lagi, kita membutuhkan modul FS, dan kemudian membaca file, tapi kali
‫ini, tidak membaca file sync, tentu saja.
‫Dan, sekali lagi, kami meneruskan nama file, atau jalur ke
‫file sebenarnya, dan sekali lagi,
‫itu adalah txt, dan file yang saya inginkan
‫sekarang disebut start. txt,
‫jadi yang ini.
‫Ups, maaf untuk itu.
‫Jadi, ini adalah file yang saya inginkan, pada tugas baca
‫ini, dan saya akan menjelaskan alasannya nanti.
‫Untuk saat ini, jangan khawatir tentang konten di sini.
‫Jadi, dalam
‫file read, sebenarnya kita tidak perlu menentukan encoding file, oke.
‫Jadi, parameter berikutnya,
‫yang kedua akan menjadi fungsi panggilan balik, dan
‫itulah yang kita pelajari di kuliah terakhir.
‫Jadi, Node JS semuanya dibangun di sekitar
‫panggilan balik untuk mengimplementasikan perilaku asinkron, dan begini
‫cara kerjanya.
‫Jadi, Node akan mulai membaca file
‫ini di latar belakang, dan segera setelah siap, itu
‫akan memulai fungsi panggilan balik yang kita tentukan di sini.
‫Oke, dan itu memanggil fungsi panggilan balik
‫ini dengan dua argumen.
‫Yang pertama adalah kesalahan, dan
‫yang kedua adalah data yang sebenarnya, oke?
‫Jadi, gaya panggilan balik kesalahan pertama ini sangat
‫khas di Node JS, oke.
‫Jadi, berkali-kali, parameter pertama
‫dalam panggilan balik akan menjadi kesalahan, jika
‫ada, dan yang kedua adalah data itu sendiri.
‫Yang penting
‫di sini adalah bahwa kesalahan biasanya selalu yang pertama, oke?
‫Jadi hanya untuk mengujinya
‫sekarang, mari kita masuk melalui konsol, datanya.
‫Jadi, sekarang mari kita benar-benar mengujinya.
‫Tapi, sebelum kita
‫melakukan ini, mari kita sebenarnya masih menentukan pengkodean pengarsipan di sini, oke?
‫Jadi, saya tidak seratus persen yakin
‫itu bekerja tanpa ini,
‫jadi bersihkan ini sekarang, jalankan lagi, dan di sini kita lihat membaca ini.
‫Jadi, mari kita analisis, sekali lagi, apa yang terjadi di sini.
‫Segera setelah fungsi ini dijalankan, ia akan
‫mulai membaca file ini di latar belakang
‫tanpa memblokir sisa eksekusi kode.
‫Jadi, biarkan saya benar-benar menunjukkan ini di sini.
‫Jadi, konsol. log
‫akan membaca file, dan hanya untuk mengurangi kebingungan di sana,
‫izinkan saya mengomentari bagian ini di sini, oke.
‫Jadi, menurut Anda apa yang akan terjadi sekarang?
‫Log apa yang akan kita lihat pertama kali?
‫Dan memang, pertama kita melihat akan membaca
‫file, dan, baru kemudian, kita melihat membaca ini.
‫Jadi, sekali lagi, mengapa itu terjadi?
‫Jadi, seperti yang saya sebutkan, Node JS akan mulai membaca
‫file di latar belakang di sini, dan tidak
‫akan memblokir kode, dan kemudian akan segera beralih ke baris kode berikutnya.
‫Dan, baris kode berikutnya, ini log ini di sini, dan
‫itu adalah hal pertama
‫yang akan dicatat di sini ke terminal.
‫Baru setelah itu, ketika sebuah file
‫selesai dibaca, fungsi callback di sini akan berjalan, oke?
‫Dan sekali lagi, fungsi panggilan balik ini memiliki akses ke kesalahan dan data
‫yang dibaca, dan kami benar-benar dapat
‫memanggil ini di sini apa pun yang kami inginkan.
‫Kita bisa menyebutnya teks juga, itu tidak terlalu
‫penting, yang penting adalah argumen kedua dalam fungsi
‫panggilan balik ini.
‫Mari kita kembali ke data
‫karena saya lebih suka cara itu.
‫Dan, hanya kemudian, konsol ini. log akan berjalan dengan data, begitu
‫juga dengan teks yang ada di file.
‫Jadi, itulah mengapa kami melihat ini di sini sebagai log kedua.
‫Baiklah, sekarang untuk melangkah lebih jauh,
‫mari kita lakukan membaca file lain, tetapi alih-alih ini, sehingga saya
‫dapat menunjukkan kepada Anda bahwa pada dasarnya kita
‫dapat melakukan beberapa langkah, satu demi satu, dengan panggilan balik.
‫Jadi, langkah-langkah yang bergantung pada hasil langkah sebelumnya.
‫Oke, jadi itulah mengapa sebenarnya di file awal, saya telah
‫membaca ini
‫karena kemudian ada file bernama read this,
‫yang memiliki konten yang sebenarnya kami minati.
‫Oke?
‫Jadi, yang akan saya lakukan di sini adalah menyalin kode
‫ini, dan meletakkannya di sini.
‫Saya akan menyebut ini satu data satu, dan
‫kemudian data dua, dan hasil dari langkah kedua, sehingga file kedua dibaca,
‫akan tergantung pada yang pertama.
‫Itu karena kita akan menggunakan data untuk nama file, ingat?
‫Jadi, di sini kita melakukan (bergumam) sekarang
‫karena kita perlu memasukkan variabel itu, dan itu disebut data
‫satu.
‫Oke, masuk akal?
‫Jadi, data yang satu akan terbaca ini, oke, dan seterusnya, pada
‫langkah selanjutnya, kita membaca txt/readthis. txt, yang kemudian
‫ini.
‫Oke, dan itulah mengapa nama file ini di sini
‫sama dengan konten ini.
‫Jadi, itu dicatat melalui data konsol untuk itu.
‫Dan, mari kita uji dengan cepat apakah ini berhasil,
‫dan memang, begitulah isi dari baca ini. txt.
‫Dan, sekarang saya benar-benar akan mengambil satu langkah lebih
‫jauh bahkan karena ada beberapa teks lain di file append ini
‫yang ingin saya tambahkan ke string pertama ini, jadi ada
‫teks yang berasal dari file lain.
‫Jadi, kita memiliki langkah lain
‫yang bergantung pada langkah sebelumnya, jadi
‫yang akan saya lakukan adalah menambahkan file baca lain di sini.
‫Jadi, seperti ini.
‫Jadi, yang ini disebut
‫append, dan saya akan menyebut yang ini data tiga, data tiga di sini,
‫dan itu, sekali lagi, jalankan itu.
‫Dan, oke, jadi sekarang kita memiliki dua hasil ini di sini.
‫Baiklah, dan sekarang akhirnya, sebagai langkah terakhir,
‫saya ingin menulis dua string ini
‫menjadi sebuah file, oke?
‫Sejauh ini, kita hanya membaca
‫file, tapi saya ingin menulis file juga,
‫jadi mari kita lakukan di sini juga.
‫Jadi, fs.
‫writeFile, dan tentu saja, kami tidak menggunakan yang sinkron seperti
‫yang kami lakukan
‫sebelumnya, tetapi sekali lagi kami menggunakan, seperti di sini dan di sini
‫dan di sini, kami menggunakan versi asinkron, bukan yang sinkron.
‫Jadi, txt slash, tidak ada yang ini di sini,
‫final.
‫Kemudian, kita harus menambahkan pengkodean SMS di sini juga, dan
‫kemudian yang ini juga menerima fungsi panggilan balik, tetapi dalam
‫hal ini tidak ada data yang kita baca, jadi,
‫kita tidak memerlukan dua argumen.
‫Jadi, satu-satunya argumen yang kita miliki adalah kesalahan, sebenarnya.
‫Oke, jadi di sini kita memiliki kesalahan, dan data yang dibaca, tetapi
‫di sini di writeFile, tidak ada data.
‫Semua yang ada, atau bisa jadi, adalah kesalahan, oke?
‫Dan sebenarnya, kami kehilangan
‫sesuatu di sini, yang sebenarnya ingin kami tulis ke file.
‫Oke, dan begitulah argumen
‫kedua, dan itu adalah data dua dan data tiga.
‫Jadi, sekali lagi string
‫(bergumam) di sini, data
‫dua, lalu karakter baris baru, yang sekali lagi, adalah garis
‫miring terbalik n, dan kemudian data 3.
‫Baiklah, jadi, seperti halnya fungsi membaca file, maka panggilan balik ini adalah
‫apa yang dijalankan di akhir, jadi yang akan saya lakukan
‫di sini adalah cukup masuk melalui konsol bahwa
‫file telah ditulis, atau file
‫telah telah ditulis.
‫File Anda telah ditulis, dan mari kita gunakan beberapa
‫emoji menyenangkan di sini, hanya untuk membuat
‫konsol sedikit lebih cerah bagi
‫kita, dan saya pikir kita harus melakukannya seperti ini.
‫Jadi, mari kita bersihkan konsol sekali lagi,
‫jalankan, dan memang kami melihat file Anda telah ditulis.
‫Jadi, benarkah?
‫Terakhir.
‫Oh, ya, ini dia.
‫Jadi, itu adalah membaca teks ini, dan
‫menambahkan teks, keduanya bersama-sama, keduanya dalam file yang sama.
‫Oke, jadi begitulah cara kami melakukan beberapa langkah dalam pesanan,
‫menggunakan fungsi panggilan balik, bukan?
‫Karena bayangkan Anda hanya membaca file yang sama, dan kemudian
‫file kedua membaca, jadi yang ini,
‫tepat setelah itu.
‫Nah, bagaimana Anda kemudian mendapatkan akses ke
‫data dari yang pertama, bukan?
‫Jadi, begitulah pola ini muncul.
‫Ini sebenarnya memiliki
‫nama sendiri, dan saya pikir saya menyebutkan
‫bahwa di video terakhir, itu disebut panggilan balik
‫neraka, dan ada beberapa solusi untuk membuat kode ini di sini
‫lebih mudah dibaca dan lebih baik untuk dipahami, tetapi
‫untuk saat ini, itu tidak penting sama sekali bagi Anda.
‫Yang penting adalah Node JS dibangun
‫berdasarkan filosofi callback ini, jadi
‫begitulah cara Node JS mengimplementasikan operasi asinkron,
‫dengan memanggil callback segera
‫setelah operasi yang dilakukannya selesai.
‫Dan, omong-omong, cara penulisan ini berfungsi yang Anda
‫lihat di sini, sekali lagi,
‫jika Anda tidak
‫terbiasa dengannya, ini adalah sintaks ES6 yang baru juga, oke?
‫Jadi, sekali lagi, saya harap Anda sudah
‫familiar dengan ES6 pada saat
‫ini, dan agar semua ini masuk akal bagi Anda.
‫Jika Anda menulis fungsi ini
‫di sini tanpa sintaks fungsi kesalahan, kami hanya
‫akan melakukan seperti ini, fungsi, err, data satu, dan kemudian
‫seperti ini.
‫Jadi, itu adalah
‫fungsi normal, katakanlah fungsi kuno,
‫dan versi baru bekerja seperti ini.
‫Perbedaan di antara mereka terutama adalah sintaks, tetapi juga
‫fakta bahwa fungsi kesalahan, jadi fungsi
‫semacam ini, tidak
‫mendapatkan kata kunci disk sendiri,
‫sehingga menggunakan kata kunci disk dari fungsi induk.
‫Dan, itu disebut kata kunci disk leksikal,
‫sedangkan fungsi normal seperti ini
‫selalu mendapatkan kata kunci disk sendiri, bukan?
‫Saya yakin Anda sudah familiar dengan hal
‫semacam itu, tapi hanya melakukan review kecil di sini jika Anda tidak.
‫Oke, saya harap itu dibuat sejak itu.
‫Kami sebenarnya tidak pernah menggunakan kesalahan ini, kami
‫tidak menangani kesalahan apa
‫pun, jadi, misalnya, bayangkan file ini di sini tidak ada.
‫Kita bisa saja menggunakan kesalahan ini,
‫dan mari kita lakukan itu, tetapi hanya untuk yang ini
‫di sini, jadi saya tidak ingin membuat semua penangan kesalahan ini di sini,
‫tetapi hanya dalam situasi ini, katakanlah ada kesalahan, dan
‫sebagainya katakanlah jika kesalahan, kembali dari
‫fungsi ini, jadi tidak melakukan apa-apa lagi, dan
‫masuk ke konsol,
‫kesalahan, dan kemudian kita dapat menambahkan beberapa emoji lain di sini, seperti
‫ledakan ini, jadi seperti sesuatu yang meledak di sini.
‫Jadi, sekarang mari kita ubah ini di sini, seperti mulai. txt, jalankan ini lagi, dan jadi,
‫kami memiliki
‫kesalahan ini sekarang, jadi ini memberi kami log ini ke
‫konsol, dan karena kami kembali, itu tidak
‫akan melakukan apa pun setelah itu, jadi semua ini
‫pada dasarnya diabaikan dan tidak akan berjalan , yang persis
‫seperti yang kita inginkan.
‫Benar, tetapi jika kita mengembalikannya ke normal,
‫dan kemudian
‫menjalankannya lagi, baiklah, semuanya berfungsi seperti sebelumnya.
‫Jadi, biasakan pola callback ini karena Anda akan
‫melihatnya di semua tempat di Node JS dan
‫di seluruh bagian ini.