wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Quiz tentang Promise dan Async/Await

Total questions: 10

Worksheet time: 5mins

Name
Class
Date
1.

Menurut sumber, apa saja tiga status utama (state) yang dimiliki oleh sebuah objek Promise?

a)

Loading, Success, Error

b)

Running, Finished, Stopped

c)

Executing, Fulfilled, Rejected

d)

Pending, Success, Failure

e)

Pending, Fulfilled (Resolved), Rejected

2.

Sebelum adanya Promise, pengelolaan kode asinkronus sering mengandalkan callbacks. Masalah apa yang diatasi oleh Promise terkait penggunaan callbacks yang berlebihan, yang menghasilkan struktur kode rumit dan sulit dibaca?

a)

Memory leak

b)

Global scope pollution

c)

Blocking main thread

d)

Deadlock

e)

"Callback hell"

3.

Promise adalah objek yang merepresentasikan hasil akhir dari operasi asinkronus. Metode Promise manakah yang dijalankan terlepas dari apakah Promise berakhir sebagai Fulfilled (Resolved) atau Rejected, dan biasanya berguna untuk pembersihan (cleanup) seperti menghentikan loading spinner?

a)

.then()

b)

.catch()

c)

.execute()

d)

.resolve()

e)

.finally()

4.

Async/await adalah sintaks yang dibangun di atas Promise untuk membuat kode asinkronus terlihat seperti sinkronus. Kata kunci manakah yang digunakan untuk mendeklarasikan sebuah fungsi agar secara otomatis membungkus nilai yang dikembalikan dalam sebuah Promise?

a)

await

b)

Promise

c)

return

d)

function

e)

async

5.

Fetch API adalah interface modern untuk membuat permintaan HTTP asinkronus yang berbasis Promise. Dalam konteks Fetch API, mengapa Promise yang dikembalikan oleh fetch() tidak otomatis di-reject ketika terjadi kesalahan HTTP seperti status 4xx atau 5xx?

a)

Karena Fetch hanya mendukung metode GET, bukan POST.

b)

Karena objek Response sudah menyediakan nilai sukses/gagal di properti response.text().

c)

Karena error tersebut secara otomatis ditangani oleh try-catch.

d)

Karena parsing data (misalnya response.json()) akan menangkap semua jenis error.

e)

Karena Fetch tidak me-reject Promise untuk kesalahan status HTTP (4xx/5xx), sehingga kita harus cek manual menggunakan if (!response.ok)

6.

Dalam sintaks Async/Await, kata kunci await digunakan di dalam fungsi asinkronus (async function). Apa fungsi spesifik dari kata kunci await?

a)

Untuk mendeklarasikan fungsi yang mengembalikan Promise.

b)

Untuk menjalankan banyak Promise secara paralel menggunakan Promise.all().

c)

Untuk mengubah hasil Promise menjadi callback function.

d)

Untuk menangani rejection menggunakan blok catch.

e)

Untuk menjeda eksekusi fungsi asinkronus hingga Promise yang dioperasikan telah resolved dan mengembalikan nilainya

7.

Promise memiliki mekanisme untuk menangani kegagalan operasi. Metode apa yang digunakan untuk menangani rejected error dari Promise, mirip dengan fungsi try-catch dalam kode sinkronus?

a)

.then()

b)

.finally()

c)

.execute()

d)

.resolve()

e)

.catch()

8.

JavaScript adalah bahasa pemrograman yang memiliki sifat dasar single-threaded. Operasi apa yang digunakan JavaScript untuk mengelola operasi asinkronus seperti input/output (I/O) atau permintaan jaringan, tanpa memblokir thread utama?

a)

Deferred execution

b)

Dynamic import

c)

Callback hell

d)

Syntactic sugar

e)

Event loop

9.

Ketika menggunakan sintaks async/await, penanganan rejection (kegagalan Promise) dilakukan dengan cara yang mirip dengan penanganan error pada kode sinkronus. Struktur apa yang digunakan untuk menangani error propagation dari Promise yang di-await?

a)

Menggunakan .catch() di akhir fungsi async.

b)

Menggunakan response.ok check.

c)

Menggunakan Promise.all().

d)

Menggunakan sintaks resolve() dan reject().

e)

Menggunakan blok try-catch

10.

Sistem Modul JavaScript (ES6+) memungkinkan organisasi kode menjadi komponen yang dapat digunakan kembali. Kata kunci apa yang digunakan untuk memungkinkan pengaksesan variabel, fungsi, atau nilai dari file modul lain, sehingga memungkinkan modul untuk "mengimpor" fungsionalitas?

a)

export

b)

module

c)

require

d)

dynamic import()

e)

import