Hal yang membuat bingung ketika kita bekerja dengan synchronous dan asynchronous program adalah bagaimana menangani suatu nilai yang didapatkan secara asynchronous pada program yang berjalan secara synchronous. 


Contohnya seperti kode berikut:

  1. const getCake = () => {

  2.  let cake = null;

  3.  console.log("Sedang membuat kue, silakan tunggu ....")

  4.  setTimeout(() => {

  5.    cake = "Kue Selesai!"

  6.  }, 3000)

  7.  return cake;

  8. }

  9.  

  10. const cake = getCake();

  11. console.log(cake);

  12.  

  13. /*output:

  14. Sedang membuat kue, silakan tunggu ....

  15. null

  16. */


Jika kita melakukan hal seperti ini untuk mencetak nilai cake yang sesungguhnya, maka hal tersebut tidak akan pernah terjadi. Karena seperti yang sudah kita ketahui fungsi setTimeout() tidak akan menghentikan JavaScript untuk mengeksekusi kode yang ada selanjutnya. Jadi fungsi getCake() akan selalu mengembalikan nilai null, karena kode return cake akan dieksekusi terlebih dahulu dibandingkan dengan cake = “Kue Selesai!”. Kode asynchronous perlu disusun dengan cara yang berbeda dari synchronous code. Cara paling dasar adalah dengan menggunakan callback function.
Apa itu callback function? Mari kita bayangkan kembali melalui pandangan dunia nyata. Kita menunggu pesanan kopi datang di meja kita tapi , pada saat itu juga kita tidak bisa berada terus di tempat itu karena ada urusan mendadak. Pada kasus ini mungkin terdapat dua aksi yang bisa kita lakukan:
  • (Synchronous) Kita tetap menunggu di meja hingga kopi itu datang dan kemudian meninggalkan kedai kopi.
  • (Asynchronous) Kita meminta tolong kepada teman kita untuk menerima kopi itu, dan bertemu nanti untuk memberikan kopinya. Sehingga kita tidak perlu menunggu untuk meninggalkan kedai kopi.
Nah pada JavaScript, teman kita berperan layaknya callback function. Ia diperintahkan pada sebuah fungsi asynchronous kemudian akan dipanggil/digunakan ketika tugas itu selesai.
Bagaimana cara melakukannya? Yang pertama kita tambahkan parameter dengan nama callback pada fungsi asynchronous.

  1. const getCake = callback => {

  2.  let cake = null;

  3.  console.log("Sedang membuat kue, silakan tunggu ....")

  4.  setTimeout(() => {

  5.    cake = "Kue Selesai!";

  6.  }, 3000)

  7.  return cake;

  8. }


Kemudian kita panggil/gunakan callback yang diisikan dengan data yang akan dibawa (cake) ketika task selesai dilakukan.

  1. setTimeout(function() {

  2.    cake = "Kue Selesai!";

  3.    callback(cake);

  4. }, 3000)


Setelah menggunakan callback, fungsi tidak perlu lagi mengembalikan nilai. Sehingga kita bisa hapus kode return cake;. Sehingga keseluruhan fungsi akan tampak seperti ini:

  1. const getCake = callback => {

  2.  let cake = null;

  3.  console.log("Sedang membuat kue, silakan tunggu ....")

  4.  setTimeout(() => {

  5.    cake = "Kue Selesai!";

  6.    callback(cake);

  7.  }, 3000)

  8. }


Kemudian untuk menggunakan fungsi getCake, kita ubah kode dari:

  1. const cake = getCake();

  2. console.log(cake);


Menjadi:

  1. getCake(cake => {

  2.  console.log(cake);

  3. })


Sehingga ketika dijalankan akan sesuai dengan harapan kita.

  1. const getCake = callback => {

  2.  let cake = null;

  3.  console.log("Sedang membuat kue, silakan tunggu ....")

  4.  setTimeout(() => {

  5.    cake = "Kue Selesai!";

  6.    callback(cake);

  7.  }, 3000)

  8. }

  9.  

  10. getCake(cake => {

  11.  console.log(cake);

  12. })

  13.  

  14. /* output:

  15. Sedang membuat kue, silakan tunggu ....

  16. ---- setelah 3 detik ----

  17. Kue Selesai!

  18. */



Callback Hell

Kita sudah mengetahui bahwa callback dibutuhkan untuk mendapatkan nilai yang berasal dari asynchronous function. Lantas bagaimana jika terdapat proses satu sama lain yang saling bergantungan? Contohnya, untuk membuat kue tahapan yang perlu kita lakukan adalah:
  1. Mempersiapkan bahan
  2. Membuat adonan
  3. Menyiapkan adonan ke cetakan
  4. Memanggang adonan
Tahapan tersebut sangat tergantung satu sama lain. Kita tidak bisa memanggang adonan sebelum membuat adonannya, dan kita tidak bisa membuat adonan tanpa mempersiapkan bahannya terlebih dahulu. Jika seluruh tahapan tersebut berjalan secara synchronous, mungkin kita bisa melakukanya seperti ini:

  1. function makeACake(...rawIngredients) {

  2.  const ingredients = gatheringIngredients(rawIngredients),

  3.  dough = makeTheDough(ingredients),

  4.  pouredDough = pourDough(dough),

  5.  cake = bakeACake(pourDough),

  6.  console.log(cake);

  7. }


Namun jika fungsi-fungsi tersebut berjalan secara asynchronous, maka kita akan membuat yang namanya callback hell. Callback hell terjadi karena banyak sekali callback function yang bersarang karena saling membutuhkan satu sama lain, sehingga kode akan tampak seperti ini:

  1. function makeACake(...rawIngredients) {

  2.  gatheringIngredients(rawIngredients, function(ingridients) {

  3.    makeTheDough(ingridients, function(dough) {

  4.      pourDough(dough, function(pouredDough) {

  5.        bakeACake(pouredDough, function(cake) {

  6.          console.log(cake);

  7.        });

  8.      });

  9.    });

  10.  });

  11. }


Melihat kode seperti ini saja, kepala jadi pusing. Terbayang sulitnya memelihara kode ini di masa yang akan datang.
Lantas apa solusi agar kita dapat menghindari callback hell? Salah satunya adalah dengan menggunakan Promise.

  1. function makeACake(...rawIngredients) {

  2.  gatheringIngredients(rawIngredients)

  3.  .then(makeTheDough)

  4.  .then(pourDough)

  5.  .then(bakeACake)

  6.  .then(console.log);

  7. }


Dengan Promise, kita dapat meminimalisir callback hell dan mengubahnya menjadi kode yang sangat mudah dibaca. Bahkan dengan kode seperti itu, non-developer pun dapat mengerti apa maksud dari kode tersebut
No image
Bookmark

Cara Membuat Callback Function di Javascript

Type:
Genre:
Status:
Country:
Keywords: Watch online Cara Membuat Callback Function di Javascript bahasa Indonesia, Streaming anime Cara Membuat Callback Function di Javascript sub indo, Mau nonton anime terbaik dengan subtitle Indonesia? Streaming anime Jepang dari anime Cara Membuat Callback Function di Javascript, website streaming anime subtitle indonesia dan nonton anime indo update setiap hari, TV Cara Membuat Callback Function di Javascript, Terbaru Terupdate dan Terlengkap dengan Kualitas 1080p, 720p. 480p, 360p Anime Sub Indo.

Comments

Comment Report Rule
Show Comments
9Anime Comment Policies & Guidelines
  1. Spoiling Content

    Definition

    “Anime Comment” is a spoiler-free section and is usually used for a general discussion about anime without spoiling any content.

    “Episode Comment” may contain spoilers for current or previous episodes. Contents from manga or future episodes are considered as spoilers.

    Hiding spoilers with spoiler tags is not allowed either.

    Consequences

    Minor Spoiler:-

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

    Major Spoiler:-

    1st Offense: Permanent Ban

  2. Diversion From Topic

    Definition

    The comment section should be about the anime on hand. Although references from other anime may be used, the core topic of the comments should be about the anime at hand.

    This rule also applies on advertising other streaming websites which results in an instant ban.

    This rule also applies to spam, posting comments like “first”, “second”, etc. are considered spam.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  3. Flame War

    Definition

    Exchange of angry or abusive messages between the comments. Any form of insulting is also considered as flame war.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  4. Posting Harmful Link

    Definition

    Post of hyperlinks for websites that may contain viruses or may harm your PC or device.

    Consequences

    1st Offense: Permanent Ban + Deletion of All Comments

  5. Posting NSFW Content

    Definition

    Posting contents that are not safe for work, such as pornographic images or video, ecchi anime, hentai, etc.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  6. Inappropriate Profile Picture

    Definition

    Using a profile picture that is not safe for work. Although minor ecchi or fanservice is acceptable.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  7. Use of Common Sense

    Definition

    If you think that you’ll get in trouble for what you’re about to do, don’t do it.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  8. Upvote Abusing

    Definition

    Creating multiple alternative accounts to upvote your own comments.

    Consequences

    1st Offense: Permanent Ban on All Accounts + Deletion of All Comments

  9. Downvote Abusing

    Definition

    Targeting a user and downvoting all his comments, or creating multiple accounts to downvote one or more comments.

    Consequences

    1st Offense: Permanent Ban on All Accounts

  10. Swearing

    Definition

    Swearing is fine, as long as it’s not directed towards anyone, even as a joke. It may be misinterpreted by a moderator.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

  11. Moderator Verdict

    Definition

    A moderator’s verdict is final and arguing with them will only cause further punishment. If you have a complaint against a staff member, or wish to file a ban appeal, go to the 9Anime Discord Server and post your issue in the #disqus-appeals channel.

    Consequences

    1st Offense: Warning + Temporary Ban (Ranging 1 day to 3 days)

    2nd Offense Within 30 Days of 1st Offense: Permanent Ban

Think you have been unfairly warned or banned?

If you believe that you’ve been unfairly banned or if you have a complaint against one or more Disqus Staff Members, you may post an appeal or complaint on 9Anime Discord Server.

STEPS

  1. Join 9Anime Discord Server: https://discord.gg/xxxxxxx
  2. Read the #rules channel and follow instructions. (Optional, but highly recommended)
  3. Head towards #disqus-appeals channel.
  4. Use the appropriate template to appeal a ban or file a complaint.