Latihan 1: Async & Microtask Debugging — Debugging

Latihan 1 dari materi Async & Microtask Debugging di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi tiga function di kode awal. Data, pemanggilan, dan tiga console.log di bawahnya sudah ada, biarkan begitu.

  1. simulateEventLoop(tasks): tasks berisi object { type, label } dengan type salah satu dari "sync", "micro", atau "macro". Kembalikan array label dalam urutan event loop: semua sync dulu (dengan urutan aslinya), lalu semua micro, lalu semua macro.
  2. findForgottenAwait(source): pecah source per baris dengan split("\n"). Laporkan nomor baris (mulai dari 1) yang memanggil function dan diakhiri ;, misalnya db.insert(order);, kecuali baris yang mengandung kata await, return, atau function. Kembalikan array nomor barisnya.
  3. detectUnhandledRejection(promises): kembalikan array id dari promise yang chained-nya false.

Output-nya harus tiga baris ini, berurutan:

  1. A,E,C,D,B
  2. 2,6
  3. p2,p3

Ada juga cek dengan data lain: simulateEventLoop dengan task yang urutannya acak, detectUnhandledRejection dengan id lain, dan findForgottenAwait dengan source lain: dari async function kirim() {, simpan(data);, await kirimEmail();, }, kirim(); hasilnya [2, 5]. Jadi hitung hasilnya dari data, jangan tulis teksnya langsung.

Hint