⊗jsSpPrmFC 171 of 294 menu

Membuat Promise yang Telah Selesai di JavaScript

Terkadang Anda mungkin perlu membuat promise yang telah selesai. Untuk ini, terdapat dua metode: metode Promise.resolve menciptakan promise yang berhasil diselesaikan, Promise.reject menciptakan promise yang ditolak. Sebagai parameternya, metode-metode ini menerima apa yang akan menjadi hasil atau kesalahan promise secara berurutan.

Kapan kita mungkin membutuhkan promise yang telah selesai? Mari kita lihat sebuah contoh. Misalkan kita memiliki suatu fungsi yang parameternya menerima sebuah angka, melakukan sesuatu secara asinkron dan mengembalikan promise dengan hasilnya:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

Kita akan menggunakan fungsi kita dengan cara berikut:

func(5).then(function(res) { console.log(res); // akan menampilkan 25 });

Misalkan sekarang kita memutuskan bahwa operasi asinkron kita akan dilakukan hanya jika angka yang diberikan lebih besar dari nol. Jika tidak, hasil fungsi haruslah nol:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // hasil nol } }

Namun, sekarang yang terjadi adalah fungsi mengembalikan baik promise maupun angka. Karena ini, kita tidak bisa lagi menerapkan metode then pada hasil fungsi, karena dalam kasus fungsi mengembalikan angka kita akan mendapatkan kesalahan:

func(0).then(function(res) { // error, menerapkan metode then pada nol });

Memperbaiki masalah ini akan dibantu oleh Promise.resolve:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // mengembalikan promise, bukan angka } }

Misalkan sekarang kita memutuskan bahwa untuk angka nol yang diberikan kita harus mengembalikan nol, dan untuk angka kurang dari nol - sebuah pengecualian. Dalam hal ini kita akan dibantu oleh metode Promise.reject:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // mengembalikan promise yang ditolak } }
Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak