<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guntur Poetra</title>
    <description>The latest articles on DEV Community by Guntur Poetra (@guntur).</description>
    <link>https://dev.to/guntur</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F104825%2F47b22f8c-d86e-4940-a7dc-72ed7cd0e3f8.jpg</url>
      <title>DEV Community: Guntur Poetra</title>
      <link>https://dev.to/guntur</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guntur"/>
    <language>en</language>
    <item>
      <title>Handle Async Promises Javascript</title>
      <dc:creator>Guntur Poetra</dc:creator>
      <pubDate>Mon, 29 Apr 2019 19:20:56 +0000</pubDate>
      <link>https://dev.to/guntur/handle-async-promises-javascript-7ck</link>
      <guid>https://dev.to/guntur/handle-async-promises-javascript-7ck</guid>
      <description>&lt;p&gt;Apabila anda telah terbiasa menggunakan &lt;a href="https://dev.to/guntur/handle-async-callback-javascript-2458"&gt;&lt;code&gt;callback&lt;/code&gt;&lt;/a&gt; pada saat mengolah code yang bersifat &lt;code&gt;asynchronous&lt;/code&gt;, itu adalah hal yang bagus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Callback
&lt;/h3&gt;

&lt;p&gt;Sekilas mengenai &lt;a href="https://dev.to/guntur/handle-async-callback-javascript-2458"&gt;&lt;code&gt;callback&lt;/code&gt;&lt;/a&gt;, sudah cukup apabila hanya menghandle flow kode yang tidak terlalu kompleks.&lt;/p&gt;

&lt;p&gt;Tetapi apa yang terjadi apabila jumlah baris kode anda sangat banyak, tentu saja akan menyulitkan pada saat mengorganisir dan &lt;code&gt;debugging&lt;/code&gt; khususnya.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Kode diatas adalah contoh &lt;code&gt;callback&lt;/code&gt; yang apabila semakin dalam subprosesnya (&lt;code&gt;nested&lt;/code&gt;), maka kode akan semakin tidak rapi dan menyulitkan untuk mengorganisir kode. Kejadian seperti ini dikenal dengan istilah &lt;strong&gt;&lt;code&gt;callback hell&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Promises
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Promise (&lt;code&gt;then&lt;/code&gt;)
&lt;/h4&gt;

&lt;p&gt;Dengan adanya fitur &lt;code&gt;promise&lt;/code&gt;, ini akan memudahkan kita dalam mengorganizir setiap potongan kode yang bersifat asynchronous. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Dari contoh diatas, kKita juga dapat membuat setiap potongan kode async menjadi pipeline yang tersusun rapi dan mudah untuk dibaca.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Async-Await
&lt;/h3&gt;

&lt;p&gt;Jika contoh diatas menggunakan &lt;code&gt;promise&lt;/code&gt;, pada contoh ini kita akan menggunakan &lt;code&gt;async&lt;/code&gt; dan &lt;code&gt;await&lt;/code&gt; keyword. Keyword &lt;code&gt;async-await&lt;/code&gt; memberikan cara lain dalam mengekspresikan penulisan code program kita. Perhatikan contoh potongan berikut&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Bisa kita perhatikan, ekspresi kode dengan menggunakan &lt;code&gt;async-await&lt;/code&gt; lebih ringkas dan flow code-nya terlihat friendly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Setelah melihat dan mengerti cara menulis &lt;code&gt;promise&lt;/code&gt; ataupun &lt;code&gt;async-await&lt;/code&gt;, kita dapat menulis kode program kita menjadi lebih mudah dibaca dan lebih mudah manage kode program kita.&lt;/p&gt;

&lt;p&gt;Penulisan menggunakan promise atau async-await cukup relative bergantung dengan context dan case setiap masalah yang akan diselesaikan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terkait
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/memahami-synchronous-dan-asynchronous-javascript-4kjj"&gt;Memahami Synchronous dan Asynchronous Javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/handle-async-callback-javascript-2458"&gt;Handle Async Dengan Callback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>callback</category>
      <category>promises</category>
      <category>asynchronous</category>
    </item>
    <item>
      <title>Handle Async Callback Javascript</title>
      <dc:creator>Guntur Poetra</dc:creator>
      <pubDate>Mon, 29 Apr 2019 19:17:36 +0000</pubDate>
      <link>https://dev.to/guntur/handle-async-callback-javascript-2458</link>
      <guid>https://dev.to/guntur/handle-async-callback-javascript-2458</guid>
      <description>&lt;p&gt;Di javascript sudah tak asing lagi dengan istilah &lt;code&gt;callback&lt;/code&gt;. Callback sendiri adalah function yang disisipkan function sebagai &lt;code&gt;paramater&lt;/code&gt; atau &lt;code&gt;argument&lt;/code&gt;. Callback sangat erat kaitannya dengan &lt;code&gt;asynchronous&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sebuah fungsi yang menerima &lt;code&gt;function&lt;/code&gt; sebagai &lt;code&gt;parameter&lt;/code&gt;-nya, merupakan ciri dari &lt;code&gt;asynchoronous&lt;/code&gt; function, sehingga dapat kita berikan &lt;code&gt;parameter&lt;/code&gt; tersebut sebagai &lt;code&gt;anonymous&lt;/code&gt; atau &lt;code&gt;naming&lt;/code&gt; function.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;cekTahun&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Function &lt;code&gt;cekTahun&lt;/code&gt; menerima sebuah &lt;code&gt;parameter&lt;/code&gt; atau &lt;code&gt;argument&lt;/code&gt; dengan nama &lt;code&gt;callback&lt;/code&gt; bertipe &lt;code&gt;function&lt;/code&gt;. Pada saat &lt;code&gt;callback&lt;/code&gt; di &lt;code&gt;invoke&lt;/code&gt;, akan mengembalikan nilai dari tahun.&lt;/p&gt;

&lt;p&gt;Contoh menggunakan &lt;code&gt;anonymous&lt;/code&gt; function.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nf"&gt;cekTahun&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tahun&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sekarang adalah tahun:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tahun&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flk6aq4xb3r3mg8bs68cx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flk6aq4xb3r3mg8bs68cx.png" alt="handle-async-callback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contoh dengan menggunakan &lt;code&gt;naming&lt;/code&gt; function.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;tampilkanTahun&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tahun&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sekarang adalah tahun:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tahun&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;cekTahun&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tampilkanTahun&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k94ywvdqsq2z4f20qvq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k94ywvdqsq2z4f20qvq.png" alt="handle-async-callback_2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Terlihat pada gambar, tidak ada perbedaan dari kedua hasil gambar diatas, baik &lt;code&gt;anonymous&lt;/code&gt; maupun &lt;code&gt;naming&lt;/code&gt; function. Ini hanyalah cara anda untuk mengorganisir setiap baris kode agar tertata rapi dan mudah dibaca.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kekeliruan Umum Mengolah Asynchronous
&lt;/h3&gt;

&lt;p&gt;Kekeliruan umum pada saat menghandle &lt;code&gt;asynchronous&lt;/code&gt; operation, adalah menghandlenya layaknya &lt;code&gt;synchronous&lt;/code&gt;. Misalnya...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;cekTanggal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;setImmediate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tanggal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;cekTanggal&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sekarang tanggal:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tanggal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwu9wq8kzz0pl6n8h4sq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwu9wq8kzz0pl6n8h4sq8.png" alt="handle-async-callback_mistake"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Function &lt;code&gt;cekTanggal&lt;/code&gt; mengembalikan nilai dari function &lt;code&gt;setImmediate&lt;/code&gt;, yang tentu saja tidak sesuai ekspetasi anda. Ini adalah kekeliruan yang umum, bahkan saya pribadi juga pernah keliru tentang ini.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terkait
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/memahami-synchronous-dan-asynchronous-javascript-4kjj"&gt;Memahami Synchronous dan Asynchronous Javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/handle-async-promises-javascript-7ck"&gt;Handle Async Dengan Promises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>callback</category>
      <category>asynchronous</category>
    </item>
    <item>
      <title>Memahami Synchronous dan Asynchronous Javascript</title>
      <dc:creator>Guntur Poetra</dc:creator>
      <pubDate>Mon, 29 Apr 2019 19:13:32 +0000</pubDate>
      <link>https://dev.to/guntur/memahami-synchronous-dan-asynchronous-javascript-4kjj</link>
      <guid>https://dev.to/guntur/memahami-synchronous-dan-asynchronous-javascript-4kjj</guid>
      <description>&lt;p&gt;Jika anda baru menggeluti bahasa pemrograman javascript, tentunya anda sering menemukan kode yang dieksekusi secara synchronous maupun asynchronous. Oke, kali ini kita sebut saja kedua istilah itu &lt;strong&gt;&lt;code&gt;sync&lt;/code&gt;&lt;/strong&gt; untuk synchronous dan &lt;strong&gt;&lt;code&gt;async&lt;/code&gt;&lt;/strong&gt; untuk asynchronous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Process
&lt;/h2&gt;

&lt;p&gt;Secara default, javascript diproses dalam baris perbaris, artinya setiap baris kode tidak akan dieksekusi sebelum baris kode sebelumnya selesai diproses. Semua proses akan ditampung dan dikenal dengan istilah &lt;strong&gt;&lt;code&gt;call stack&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Synchronous
&lt;/h2&gt;

&lt;p&gt;Synchronous (&lt;strong&gt;&lt;code&gt;sync&lt;/code&gt;&lt;/strong&gt;), merupakan mode default dalam proses eksekusi perintah kode. Perhatikan baris kode berikut&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;tanyaKabar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Apa kabar,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;katakanHallo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hallo,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;katakanHallo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Guntur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;tanyaKabar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gun&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Jika kita eksekusi kode diatas, maka pada layar &lt;code&gt;console&lt;/code&gt; dibrowser anda akan muncul seperti gambar berikut&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wi8tj06b4vv54w7r2ql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wi8tj06b4vv54w7r2ql.png" alt="console-sync"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sepertinya semua berjalan dengan baik, tidak ada yang aneh dan baik-baik saja. Hahaa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asynchronous
&lt;/h2&gt;

&lt;p&gt;Jika pada &lt;code&gt;sync&lt;/code&gt;, kode diproses baris perbaris, maka di &lt;code&gt;async&lt;/code&gt; kode diproses secara baris perbaris juga. Hah..., maksudnya, lantas perbedaannya apa?&lt;/p&gt;

&lt;p&gt;Dalam skenario-nya, sebenarnya kode &lt;code&gt;async&lt;/code&gt; telah diproses, hanya saja sebatas penjadwalan untuk dieksekusi pada tahapan berikutnya. Artinya, kode yang berperilaku &lt;code&gt;async&lt;/code&gt; tidak akan langsung dieksekusi, tetapi di &lt;code&gt;skip&lt;/code&gt; dan akan melakukan eksekusi baris perintah berikutnya.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;tanyaKabar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Apa kabar,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;katakanHallo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setImmediate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hallo,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;katakanHallo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Guntur&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;tanyaKabar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gun&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Mari kita eksekusi kode diatas dan perhatikan hasilnya&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1rlkiqup6phg54n2kdd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1rlkiqup6phg54n2kdd.png" alt="console-async"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Terlihat perbedaan pada urutan proses eksekusinya. Fungsi &lt;code&gt;katakanHallo('Guntur')&lt;/code&gt; tidak langsung dieksekusi, sebab penerapannya menggunakan &lt;code&gt;asynchronous&lt;/code&gt; dalam body fungsi &lt;code&gt;katakanHallo&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kapan Menggunakan Async?
&lt;/h3&gt;

&lt;p&gt;Pemanfaatan &lt;code&gt;async&lt;/code&gt; sangat berguna pada saat melakukan operasi-operasi yang tidak harus menunggu proses yang lainnya. Misalnya, memanipulasi &lt;code&gt;DOM&lt;/code&gt; ketika melakukan proses &lt;code&gt;ajax&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Agar bisa memahami, kita perlu mengetahui cara menghandle kode &lt;code&gt;async&lt;/code&gt; tersebut dengan cara &lt;code&gt;callback&lt;/code&gt; ataupun &lt;code&gt;promises&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kesimpulan
&lt;/h2&gt;

&lt;p&gt;Yang perlu digarisbawahi adalah bagaimana cara kita untuk mengurutkan setiap baris-baris perintah agar dapat diproses dan dieksekusi sesuai tujuan.&lt;/p&gt;

&lt;p&gt;Setiap kode yang akan dituliskan tidak selalu menggunakan &lt;code&gt;synchronous&lt;/code&gt; ataupun &lt;code&gt;asynchronous&lt;/code&gt;, itu selalu bergantung pada kebutuhan sebuah proses program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terkait
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/handle-async-callback-javascript-2458"&gt;Handle Async Dengan Callback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/guntur/handle-async-promises-javascript-7ck"&gt;Handle Async Dengan Promises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>web</category>
      <category>synchronous</category>
      <category>asynchronous</category>
    </item>
  </channel>
</rss>
