Lompati ke konten utama
Modul 7 · Pelajaran 2 dari 426/32 dalam kursus~12 min
Pelajaran modul (2/4)

async / menunggu

async/await adalah sintaks yang lebih jelas untuk bekerja dengan Janji: kode berbunyi seperti kode sinkron, tetapi di balik layar ia menggunakan Janji yang sama persis seperti pelajaran sebelumnya.

async function

Fungsi yang dideklarasikan dengan async selalu mengembalikan Janji.

JS
async function forty() {
  return 40;
}

forty(); // Promise { 40 }
forty().then((v) => console.log(v)); // 40

Bahkan jika Anda mengembalikan nilai "normal", fungsi tersebut membungkusnya dalam Janji yang telah diselesaikan.

await

Di dalam async function Anda dapat meletakkan await sebelum Janji: eksekusi dijeda sampai Janji itu lunas, kemudian dilanjutkan dengan nilai yang telah ditetapkan.

JS
async function sum() {
  const a = await Promise.resolve(10);
  const b = await Promise.resolve(20);
  return a + b; // 30
}

Setara dengan gaya .then (lebih bertele-tele):

JS
function sum() {
  return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}

await menyebarkan kesalahan

Jika Janji ditolak, await menampilkan kembali kesalahan. Anda bisa menangkapnya dengan normal try/catch:

JS
async function read() {
  try {
    const x = await Promise.reject(new Error('no'));
    return x;
  } catch (err) {
    return 'error: ' + err.message;
  }
}

read(); // Promise { 'error: no' }

Panah asinkron

JS
const double = async (n) => n * 2;
double(5); // Promise { 10 }

Cobalah

Latihan#js.m7.l2.e1
Upaya: 0Memuat…

Tentukan `fungsi async addOne(p)` yang menerima Janji sejumlah dan mengembalikan (sebagai Janji) nomor + 1. Gunakan menunggu.

Memuat editor…
Tunjukkan petunjuk

const n = menunggu p; kembali n + 1;

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#js.m7.l2.e2
Upaya: 0Memuat…

Tentukan `sumTwo(pa, pb)` async: menerima dua janji angka, mengembalikan jumlahnya. Gunakan dua menunggu berurutan.

Memuat editor…
Tunjukkan petunjuk

tunggu masing-masing, lalu kembalikan a + b.

Solusi tersedia setelah 3 upaya