Начать. Это бесплатно
или регистрация c помощью Вашего email-адреса
Asynchronous JavaScript создатель Mind Map: Asynchronous JavaScript

1. JavaScript is single-threaded

1.1. hanya dapat mengeksekusi satu task dalam satu waktu

1.1.1. jika ada task terlalu lama untuk dieksekusi akan menyebabkan task-task lain tertunda eksekusinya sampai task tersebut selesai

1.1.1.1. jika terjadi dibrowser, pengalaman pengguna akan menjadi terganggu karena tab menjadi tidak resposive/frozen/blocking

1.1.1.1.1. maka munculah istilah asynchronous yang berarti JavaScript tidak perlu menunggu sebuah task selesai untuk menjalankan task berikutnya

2. Browser, Node.js are multi-threaded

2.1. menyediakan API yang dijalankan di thread yang berbeda

2.1.1. WEB API

2.1.1.1. Fetch/xhr api

2.1.1.2. Timer

2.1.1.3. Event

2.1.1.4. dll

2.1.2. Node API

2.1.2.1. Timer

2.1.2.2. File System

2.1.2.3. Event

2.1.2.4. dll

3. Asynchronous Callbacks

3.1. sebuah function yang akan dijalankan saat sebuah asynchronous task selesai

3.1.1. old-style, tapi masih sering dipake seperti di event listener atau di timer API

3.1.1.1. callback hell, ini terjadi jika kita harus menjalankan asynchronous task dalam satu operasi yang saling tergantung satu sama lain

4. Promises

4.1. ES2015, modern-way dan better-way untuk bekerja dengan asynchronous task

4.1.1. Promise berarti "aku janji akan memberi tahu hasilnya nanti apapun itu".

4.1.1.1. Promise merupakan sebuah built-in Object di JavaScript yang menunjukkan status dari sebuah asynchronous task.

4.1.1.1.1. saat sebuah Promise dibuat maka status nya pending

4.1.1.1.2. hingga task selesai maka statusnya resolved

4.1.1.1.3. jika terjadi failure/error maka statusnya rejected

5. The Event Loop

5.1. sebuah konsep dimana ada sebuah perulangan yang tak ada akhirnya, saat JavaScript engine menunggu task untuk di eksekusi dari queue, dan jika ada maka akan dieksekusi satu persatu sesuai antrian (first-in first-out)

5.1.1. setiap tab di browser memiliki satu event loop

5.1.1.1. watch this video for more

6. async await

6.1. ES2017

6.1.1. syntactic sugar untuk Promises

6.1.1.1. bekerja dengan Asynchronous task menjadi jauh lebih mudah