Skip to content

Instantly share code, notes, and snippets.

View bepitulaz's full-sized avatar
🏗️
Start doing indie hacking again!

Asep Bagja Priandana bepitulaz

🏗️
Start doing indie hacking again!
View GitHub Profile
@bepitulaz
bepitulaz / callback-hell-and-solution.js
Created January 5, 2017 06:09
Callback vs Promise
/**
MASALAH:
Anggap kita punya 3 asynchronous function yang harus dijalankan berurutan.
Jadilah callback hell seperti di bawah ini.
Apalagi jika kita harus menjalankan operasi tertentu di antara
callback-callback tersebut yang membuat kode menjadi panjang, dan tentunya
makin sulit dibaca.
*/
jQuery.get('http://example.com/data.json', function(response) {
// lakukan sesuatu dengan `response` dari operasi 1
@bepitulaz
bepitulaz / cara-kerja-promise.js
Last active January 29, 2018 14:21
Mengenal Promise pada JavaScript
/**
Buat object dari Promise-nya.
*/
var janjiBunga = new Promise(function(resolve, reject) {
var http = new XMLHttpRequest();
var url = '/bunga';
var params = 'jumlah=1000000';
http.open('POST', url, true);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
@bepitulaz
bepitulaz / then-chaining.js
Created January 9, 2017 03:24
Mengenal Promise pada JavaScript
var samplePromise = new Promise(function(resolve, reject) {
// setTimeout untuk mensimulasikan async function
setTimeout(function() {
resolve(5);
}, 5);
});
samplePromise.then(function(data) {
console.log(data); // isinya 5
return data * 2;
@bepitulaz
bepitulaz / contoh-rejected-promise.js
Created January 9, 2017 03:57
Memahami Promise pada JavaScript
var samplePromise = new Promise(function(resolve, reject) {
// setTimeout untuk mensimulasikan async function
setTimeout(function() {
// Dapat diisi apapun. Yang paling umum menggunakan object Error
reject(Error('Sengaja dibuat salah.'));
}, 5);
});
samplePromise.then(function(data) {
console.log(data); // tidak terpanggil
@bepitulaz
bepitulaz / promise-all.js
Last active January 16, 2017 05:24
Memahami Promise Bagian 2
var promiseOne = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('promise 1 sukses');
}, 2000);
});
var promiseTwo = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('promise 2 sukses');
}, 3000);
@bepitulaz
bepitulaz / promise-race.js
Last active January 16, 2017 06:10
Promise bagian 2
var promiseOne = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('promise 1 sukses');
}, 2000);
});
var promiseTwo = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('promise 2 sukses');
}, 3000);
@bepitulaz
bepitulaz / kode-diuji.js
Last active February 22, 2017 05:09
Sample of unit testing in my article.
/**
* Fungsi ini digunakan untuk menghitung harga barang setelah diskon.
* @param {Number} discountRate - nilai diskon yang diberikan
* @param {Number} originalPrice - harga barang sebelum diskon dalam Rupiah
* @returns {Number}
*/
function calculateDiscount(originalPrice, discountRate) {
let discount = originalPrice * discountRate / 100;
return originalPrice - discount;
}
@bepitulaz
bepitulaz / blink.ino
Created March 27, 2017 09:34
Menyalakan LED Pada ESP8266
@bepitulaz
bepitulaz / oscillator.js
Created April 5, 2017 05:27
Membuat suara dengan menggunakan Web Audio API
(function() {
let audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// Create the oscillator
let osc1 = audioCtx.createOscillator();
let osc2 = audioCtx.createOscillator();
// Create the gain node
let gainOsc1 = audioCtx.createGain();
let gainOsc2 = audioCtx.createGain();
@bepitulaz
bepitulaz / panner.js
Created April 7, 2017 07:57
Belajar membuat 3D sound dengan menggunakan Panner Node
(function() {
let audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// Create the oscillator
let osc1 = audioCtx.createOscillator();
// Create the gain node
let gainOsc1 = audioCtx.createGain();
// Create the panner