Perbedaan Synchronous dan Asynchronous

Synchronous berarti sesuatu dilakukan secara berurutan. Misalkan kita akan melakukan suatu pekerjaan yang mempunyai 3 tahapan. Tahap 1 dimulai, tahap 2 tidak bisa dimulai sebelum tahap 1 selesai, dan tahap 3 tidak bisa dimulai sebelum tahap 2 selesai.

Sebaliknya, Asynchronous berarti sesuatu dilakukan mungkin dalam waktu yang bersamaan.

Baca juga penerapan synchronous & asynchronous dengan NodeJS.

Analogy

Seandainya kita akan memasak Indomie Sarimi. Bila kita menggunakan konsep Synchronous, maka yang kita lakukan adalah:

  1. Panaskan air dan tunggu hingga mendidih.
  2. Setelah air mendidih, masukkan mie kedalam air mendidih dan tunggu hingga matang.
  3. Setelah mie matang, siapkan bumbu dalam sebuah piring/mangkok.
  4. Setelah bumbu siap, tuangkan mie yang sudah matang kedalam piring/mangkok yang sudah disiapkan.

Bila kita perhatikan, pada beberapa kata yang diberi garis bawah, terdapat sebuah kesimpulan, bahwa dengan konsep Synchronous, kita bisa mengerjakan langkah/tahapan selanjutnya jika dan hanya jika langkah/tahapan yang sebelumnya telah selesai dilakukan.

Berbeda bila kita menggunakan konsep Asynchronous, kita bisa melakukan beberapa tahapan dalam waktu yang hampir bersamaan (tidak ada kata menunggu). Langkah2 yang kita ambil kurang lebih akan menjadi seperti ini:

  1. Panaskan air.
  2. Sambil menunggu air mendidih, siapkan bumbu dalam sebuah piring/mangkok.
  3. Bila air sudah mendidih, masukkan mie kedalam air mendidih.
  4. Bila mie sudah matang, tuangkan mie yang sudah matang kedalam piring/mangkok yang sudah disiapkan.

Kata "Sambil menunggu air mendidih" itu berarti ketika proses memanaskan air, kita bisa melakukan hal selanjutnya (menyiapkan bumbu mie) untuk mempercepat proses pengerjaan.

Sedangkan kata "Bila...", dalam konsep Asynchronous itu adalah suatu promise, artinya ada langkah2 yang harus dikerjakan bila suatu langkah sudah selesai.

Pseudocode

Contoh proses diatas bila dikonversi kedalam bentuk Pseudocode:

Synchronous
function masakMie(){  
    panaskanAir(); // (1)
    masukkanMie(); // (2)
    siapkanBumbu(); // (3)
    tuangkanMie(); // (4)
}
Asynchronous
function masakMie(){  
    panaskanAir().then(function(){  // (1)
        masukkanMie().then(function(){ // (3)
            tuangkanMie(); // (4)
        });
    });
    siapkanBumbu(); // (2)
}

Baca juga penerapan synchronous & asynchronous dengan NodeJS.

Pros & Cons

Masing-masing kelebihan dan kekurangan dari konsep Synchronous & Asynchronous dalam programming:

Synchronous vs Asynchronous
PROS
CONS
Synchronous
  • Enables real-time processes
  • Usually easier to track errors
  • Can be time-consuming or lead to latency while waiting for processes to complete sequentially
  • User experience maybe poor
Asynchronous
  • Actions are not blocked by other requests are waiting to resolve
  • Multiple actions can take place at one time, which decreases waiting time for users
  • Response times are not always predictable, which can affect time-sensitive processes
  • Errors may be harder to track
Source: TechTarget

Semoga bermanfaat.