Cara menggunakan WRAPPNG pada JavaScript

Manda Putra

Posted on Nov 21, 2019 • Updated on Apr 30, 2020

Hi! 😃 this is not right. Mungkin ini adalah beberapa cara kita membuat fungsi di JavaScript yang jarang kita gunakan dan saya harap beberapa contoh disini digunakan dengan tepat. Welcome to JavaScript function jungle!

Callback and Callback Promises

jangan dipakai yak, sekarang sudah jamannya promise. anda tidak mungkin juga kan bikin library lalu kasih tagline "still support callback"

Jikalau code snippet di bawah ini pernah terlintas di kepala kita, dan kita bertanya bagaimana sih caranya membuat yang seperti ini :

// then - cacth
mymodel.find[{ name: 'Agus Sumboro' }].then[data => console.log[data]] // works

// async await
await mymodel.find[{ name: 'Agus Sumboro' }] // works

// callback
mymodel.find[{ name: 'Agus Sumboro' }, [data] => {
  console.log[data] // works also
}]

// dan contoh lainnya

Enter fullscreen mode Exit fullscreen mode

yup, pertama kita harus pahami dulu bagaimana sih cara membuat callback, atau gampangnya sebuah function yang return valuenya adalah function :

function callback[params, cb] {
  cb[params]
}

callback['Halo Isabela', console.log] // Halo Isabela

Enter fullscreen mode Exit fullscreen mode

oke ini hanya support callback saja, lalu bagaimana jika ini support promise juga? saya sempat ingin membuat pull request di mongoose soal views karena menarik di sinilah saya tau kalau ternyata cara sebuah library menghandle ini cukup unik :

function cbPromises[params, callback] {
  const error = new Error[`${params} Not A Number`]
  // check if its function return callback if not return promise
  if [typeof callback === 'function'] {
    if [isNaN[params]] return callback[null, error] // isNaN[] not a number
    return callback[params]
  }
  return new Promise[[resolve, reject] => {
    if[isNaN[params]] reject[error]
    resolve[params]
  }]
}

//  now this works yay!
cbPromises['Halo', function[data, err] {
  if[err] return console.log[err.message] // Halo Not A Number
  console.log[data]
}]

cbPromises[13]
  .then[data => console.log[data]] // 13
  .catch[err => console.log[err.message]]

Enter fullscreen mode Exit fullscreen mode

Menurut saya agak naif menyuruh seorang 'newbie' [saya disini me-refer orang yang baru masuk ke dunia JS] menggunakan async await atau Promise tanpa memberinya kejelasan dahulu bagaimana cara kita membuat promise atau callback. Lest be clear here, and admit something... kita sendiri jarang membuat Promise apalagi Callback kalau di dunia front-end paling saya buat promise cuma untuk Loading Screen. At least we understand how it works and why promise and async is a thing not just syntatic sugar don't we? 😁.

Saya juga belum lama masuk ke dunia JS, mungkin 2 tahun kurang lebih. Saat saya pertama kali kerja [dan saat ini saya masih disana juga], salah satu proyek kantor saya adalah aplikasi dengan 300k++ loc [line of code]. First commit program itu tercatat 2015 Januari, yaudah callback hell. hahaha. Biasanya program seperti ini di maintain 6 orang kalau di startup, dikarenakan resource minim cuma 2 orang 😂 yah satu cuti satu kena hajar callback.

Lanjut...

Recursive Function

Pernah ga ngalamin error seperti ini :

  • ERR: ENAMETOOLONG ternyata panjang nama sebuah file/argumen di terminal kita itu terbatas, lebih tepatnya dibatasi oleh OS.
  • warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners[] to increase limit.

Saya sering menemukan ini saat pertama belajar video processing, atau berkerja dengan child_process, mungkin penerapan function ini bisa membantu menyelesaikan masalah. Mungkin besok saya open ke github reponya setelah selesai bersih - bersih yang ga perlu, atau mungkin buat artikel soal video processing saja.

jika kamu mendapatkan error tsb hal yang dapat kamu lakukan melihat perintah terminal yang kamu gunakan, jika perintah terminal tersebut dapat di minimalisir maka mungkin looping adalah salah satu caranya

// recursive is fun
const arr = [1, 2, 4, 5]
let i = 0
function recursiveFun[] {
  i++
  const element = arr[i]
  if[element === 4] return console.log[element]
  recursiveFun[]
}

Enter fullscreen mode Exit fullscreen mode

Cara kerja function diatas sangat simple, ambil arr posisi ke i, kalau element bukan 4 maka i+1 panggil fungsi recursiveFun[] lagi. Bagusnya function seperti ini dia menyimpan value variable yang ada diluarnya. Tentu ini sangat rare digunakan, dan saya sarankan tidak mengunakan ini kalu belum ketemu error seperti diatas yang mungkin saja solusinya adalah ini.

Salah satu code yang mungkin men-trigger error possible EventEmitter memory leak detected. :

let arr = [[1,2], [1,3]] // big two dimensional array

for [let i = 0; i  { /** do stuff*/ }

// do this instead
export function aUsualFunction[params, paramas3] {
  // do stuff
}

Enter fullscreen mode Exit fullscreen mode

Bagaimana cara memanggil fungsi di JavaScript?

Cara Memanggil/Eksekusi Fungsi Kita bisa memanggil fungsi di dalam kode Javascript dengan menuliskan nama fungsinya seperti ini: namaFungsi[]; Contoh: // membuat fungsi function sayHello[]{ console.log["Hello World!"]; } // memanggil fungsi sayHello[] // maka akan menghasilkan -> Hello World!

Apa cara yang benar untuk menulis array JavaScript?

Cara Membuat Array pada Javascript Pada javascript, array dapat kita buat dengan tanda kurung siku [ [...] ]. Contoh: var products = []; Maka variabel products akan berisi sebuah array kosong.

Apa beda dari JavaScript dan Node JS?

Maka dari itu, Javascript disematkan pada kode HTML. Inilah mengapa Javascript disebut sebagai bahasa pemrograman sisi client. Di sisi lain, Node.js adalah platform untuk menjalankan kode Javascript di sisi server. Ia mengeksekusi kode JavaScript sebelum website ditampilkan pada browser.

Apa itu OnClick pada JavaScript?

title = adalah event jika sebuah element html di klik.

Bài mới nhất

Chủ Đề