Pengantar Async/Await
Pelajari dasar-dasar fungsi `async` dan ekspresi `await` untuk menulis kode asinkron yang tidak memblokir.
Pengantar Async/Await adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 3 pelajaran total.
Mengapa Pemrograman Asinkron?
Dalam pemrograman, tugas sering kali melibatkan penantian. Misalnya menunggu berkas dimuat, permintaan jaringan selesai, atau kueri basis data mengembalikan hasil.
Secara tradisional, program menahan eksekusi selama penantian ini, yang berarti program menghentikan semua operasi lain hingga tugas selesai. Hal ini dapat membuat aplikasi lambat dan tidak responsif.
Saat Kode Menunggu...
Perhatikan contoh sederhana operasi yang menahan eksekusi ini. Program akan berhenti selama 2 detik sebelum mencetak pesan kedua.
Cobalah menjalankannya:
use std::thread;
use std::time::Duration;
fn main() {
println!("Starting a blocking task...");
thread::sleep(Duration::from_secs(2)); // This blocks!
println!("Blocking task finished!");
}Dampak Penantian
Pada contoh sebelumnya, seluruh program menunggu. Jika ini adalah server web, artinya saat permintaan seorang pengguna menunggu basis data, tidak ada pengguna lain yang dapat dilayani!
Pemrograman asinkron memungkinkan program Anda memulai tugas yang berjalan lama, lalu melanjutkan pekerjaan lain alih-alih menunggu. Saat tugas yang lama selesai, program dapat melanjutkannya.
Pendekatan Asinkron Rust
Rust menyediakan fitur bahasa yang kuat untuk pemrograman asinkron: kata kunci async dan await.
- Fungsi
asyncadalah fungsi khusus yang dapat dijeda dan dilanjutkan. .awaitdigunakan di dalam fungsiasyncuntuk menunggu tugas asinkron lain selesai tanpa menahan seluruh program.
Mendefinisikan Fungsi `async`
Anda mendeklarasikan fungsi asinkron dengan menambahkan kata kunci async sebelum fn. Fungsi async selalu mengembalikan Future.
Future adalah nilai yang mungkin belum siap. Future merepresentasikan komputasi yang pada akhirnya akan menghasilkan suatu hasil.
async fn my_async_task() -> u32 {
// This task will eventually return 42
42
}Menjeda dengan `.await`
Kata kunci .await membuat pemrograman asinkron tidak menahan eksekusi. Saat Anda menggunakan .await pada Future, fungsi async Anda akan:
- Menjeda eksekusinya sendiri.
- Memungkinkan program melakukan pekerjaan lain.
- Melanjutkan setelah Future yang ditunggu siap.
Ini seperti menekan tombol jeda pada tugas saat ini sementara tugas lain selesai.
Menjalankan Kode Asinkron: Executor
Fungsi async mengembalikan Future, tetapi tidak langsung menjalankan kode di dalamnya. Future bersifat malas.
Untuk benar-benar menjalankan fungsi async dan mengeksekusi Future-nya, Anda memerlukan executor. Untuk contoh sederhana, kita dapat menggunakan futures::executor::block_on, yang menjalankan Future hingga selesai pada thread saat ini.
Program `async`/`await` Pertama Anda
Berikut cara async, await, dan executor sederhana bekerja bersama. Perhatikan bahwa block_on digunakan di main untuk memulai proses asinkron.
Contoh ini menyimulasikan jeda asinkron tanpa menahan thread fungsi main (secara konseptual; block_on sendiri menahan eksekusi hingga Future selesai, tetapi tugas asinkron itu sendiri menyerahkan kendali).
use futures::executor::block_on;
use std::time::Duration;
async fn learn_and_wait() {
println!("Learning asynchronously...");
// Simulate an async operation that takes time
// In a real app, this would be an I/O op
tokio::time::sleep(Duration::from_secs(1)).await;
println!("Finished learning!");
}
fn main() {
println!("Starting main function.");
block_on(learn_and_wait());
println!("Main function finished.");
}Memahami Trait `Future`
Saat Anda menulis async fn my_func(), Rust sebenarnya mengubahnya menjadi mesin keadaan yang mengimplementasikan trait Future.
Trait Future memiliki satu metode utama, poll, yang berulang kali dipanggil oleh executor untuk memeriksa apakah tugas siap melanjutkan. Saat sebuah Future dikenai .await, Future tersebut memberi tahu executor untuk memeriksa Future lain hingga selesai.
Pemeriksaan Cepat: Dasar-Dasar Async/Await
Anda telah mempelajari dasar-dasar async dan await. Mari kita lihat apakah Anda dapat mengenali peran utamanya.
Rangkuman & Langkah Berikutnya
Kerja bagus! Anda telah mengambil langkah pertama dalam pemrograman Rust asinkron.
- Kita melihat bahwa blok kode sinkron membuat program menunggu.
- Kode asinkron memungkinkan tugas berjalan secara bersamaan tanpa menghambat.
- Kata kunci
asyncmendeklarasikan fungsi asinkron yang mengembalikan Future. - Kata kunci
.awaitmenjeda fungsiasynchingga Future siap. - Diperlukan pelaksana (seperti
block_on) untuk menjalankan Future.
Selanjutnya, kita akan mendalami Tokio, runtime dan ekosistem yang andal untuk membangun aplikasi asinkron di Rust dalam situasi nyata!
Belajar Rust dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 39
- Pelajaran
- 144
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengantar Async/Await” gratis?
Ya — teks lengkap “Pengantar Async/Await” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Pengantar Async/Await”?
Pelajari dasar-dasar fungsi `async` dan ekspresi `await` untuk menulis kode asinkron yang tidak memblokir. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?
Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “Pengantar Async/Await” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?
Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengantar Async/Await
- Membangun Aplikasi Asinkron dengan Tokio
- Bekerja dengan Future dan Tugas