Fahami Promise dalam Javascript

Apa tu promise? Dalam bahasa melayunya janji. Ya promise dalama javascript sama juga dengan promise dalam real life. Contoh aku janji aku nak buat blog post baru kat blog ni. Dalam janji biasanya akan ada 2 result kan? Janji ditepati & juga janji dicapati.haha Kalau aku berjaya publish blog yang aku sedang tulis ni, jadi janji ditepati tapi kalau aku tak publish pun maknanya janji aku dah dicapatikan lah . Macam tu juga promise dalam javascript, ada 2 result, resolve & reject.


let janji = new Promise((resolve, reject) => {
    
    // Buat sesuatu yang berfaedah
    let published = true;
    
    if(published){
        resolve('ditepati');
    }else {
        reject('dicapati');
    }
    
});

// Guna promise dalam js

janji
    .then((mesej) => console.log('Janji telah ' + mesej)) // klu resolve
    .catch((mesej) => console.log('Janji telah ' + mesej)); // kalau reject

Kenapa perlu guna promise? Sebelum wujudnya promise, dalam asynchronous programming, developer javascript selalunya akan mengunakan callback untuk memastikan function tidak run sebelum task sebelumnya siap & hanya akan run selepeas task sebelumnya siap.

Synchronous programming


console.log('task no.1');
console.log('task no.2');
console.log('task no.3');
console.log('task no.4');


/* result:
task no.1
task no.2
task no.3
task no.4
*/

Asynchronous programming


console.log('task no.1');
setTimeout(() => {
    console.log('task no.2');
}, 2000);  // delay 2 saat
console.log('task no.3');
console.log('task no.4');


/* result:
task no.1
task no.3
task no.4
task no.2
*/

// selepas 2 saat baru task no.2 siap

Akan tetapi mengunakan callback akan menjadi masalah jika code kita terlalu besar dan terlalu banyak task callback function perlu diselesaikan sebelum ia siap. Jadi code akan menjadi susah untuk dibaca. Contoh callback function akan di update kemudian hari..