⊗jsSpPrmInr 162 of 294 menu

Pengenalan Promise dalam JavaScript

Anda sudah tahu bahwa penggunaan model asinkronitas callback mudah mengarah ke situasi callback hell. Oleh karena itu, diperkenalkan model baru dalam JavaScript yang disebut promise (promise). Mari kita pelajari model ini.

Promise merepresentasikan sebuah objek, yang ke dalamnya sebuah fungsi diteruskan sebagai parameter, di dalamnya kita perlu menempatkan kode asinkron kita:

let promise = new Promise(function() { // kode asinkron });

Seperti yang Anda lihat, saya mencatat objek dengan promise ke dalam variabel promise. Di suatu tempat lain dalam kode, saya dapat menerapkan metode then pada variabel ini, dengan meneruskan sebuah fungsi yang berisi kode, yang harus dieksekusi setelah penyelesaian kode asinkron, yang ditulis saat pembuatan promise ini:

promise.then(function() { // akan dieksekusi ketika kode asinkron selesai });

Terdengar membingungkan, jadi mari kita lihat contohnya. Misalkan saya memiliki kode asinkron seperti ini:

setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000);

Misalkan saya ingin menyelesaikan untuknya tugas utama asinkronitas kita: mengeksekusi beberapa kode setelah timer terpicu. Pada saat yang sama, saya tidak ingin menempatkan kode ini di dalam timer itu sendiri dan saya ingin agar ke dalam kode ini entah bagaimana hasilnya, yang saya tulis dalam variabel result, dapat masuk. Secara umum, kita telah menyelesaikan tugas ini dalam pelajaran-pelajaran sebelumnya melalui callback dan subscription. Mari sekarang kita lihat bagaimana melakukannya dengan promise.

Pertama-tama, kita perlu membungkus kode asinkron kita ke dalam sebuah promise:

let promise = new Promise(function() { setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000); });

Namun, ini belum cukup. Kita harus secara eksplisit menunjukkan bahwa kode asinkron kita telah selesai. Dalam hal ini, kita dibantu oleh sebuah fungsi penyelesaian khusus, yang secara otomatis masuk ke parameter pertama fungsi, jika parameter tersebut ditentukan:

let promise = new Promise(function(resolve) { // tentukan parameter setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000); });

Dengan menggunakan fungsi penyelesaian, kita dapat secara eksplisit menunjukkan kepada promise bahwa kode asinkron telah selesai. Untuk itu, kita harus memanggil fungsi ini di tempat yang kita inginkan:

let promise = new Promise(function(resolve) { setTimeout(function() { let result = [1, 2, 3, 4, 5]; resolve(); // menyelesaikan promise }, 3000); });

Pada saat yang sama, jika kita ingin meneruskan suatu hasil dari kode asinkron ke luar, kita dapat meneruskannya sebagai parameter ke fungsi penyelesaian kita:

let promise = new Promise(function(resolve) { setTimeout(function() { let result = [1, 2, 3, 4, 5]; resolve(result); // meneruskan hasil }, 3000); });

Tentu saja, kita dapat menghilangkan variabel perantara:

let promise = new Promise(function(resolve) { setTimeout(function() { resolve([1, 2, 3, 4, 5]); }, 3000); });

Sekarang di tempat lain mana pun, kita dapat memanggil metode then dari promise kita:

promise.then(function() { // akan terpicu ketika promise selesai });

Hasil kerja promise akan masuk ke parameter pertama fungsi, jika kita ingin menentukannya:

promise.then(function(result) { console.log(result); // akan menampilkan array dengan hasil });

Buat sebuah promise, di dalamnya akan ada penundaan selama 5 detik, setelah itu promise harus selesai, dengan mengembalikan suatu teks sebagai hasilnya. Tampilkan teks ini di layar.

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