⊗jsSpPrmFC 171 of 294 menu

Mencipta Janji yang Telah Selesai dalam JavaScript

Kadangkala anda mungkin perlu mencipta janji yang telah selesai. Untuk ini terdapat dua kaedah: kaedah Promise.resolve mencipta janji yang berjaya diselesaikan, Promise.reject mencipta janji yang ditolak. Parameter yang diterima oleh kaedah-kaedah ini adalah apa yang akan menjadi hasil atau ralat janji masing-masing.

Bilakah kita mungkin memerlukan janji yang telah selesai? Mari kita lihat contoh. Katakan kita mempunyai beberapa fungsi yang menerima parameter nombor, melakukan sesuatu secara tak segerak dengannya dan mengembalikan janji dengan hasil:

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 memaparkan 25 });

Katakan sekarang kita memutuskan bahawa operasi tak segerak kita hanya akan dilakukan jika nombor yang diberikan lebih besar daripada sifar. Jika tidak, hasil fungsi mestilah sifar:

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

Walau bagaimanapun, sekarang ini bermakna fungsi mengembalikan sama ada janji atau nombor. Oleh kerana itu, kita tidak lagi boleh menggunakan kaedah then pada hasil fungsi, kerana dalam kes fungsi mengembalikan nombor kita akan mendapat ralat:

func(0).then(function(res) { // ralat, menggunakan kaedah then pada sifar });

Masalah ini boleh dibetulkan dengan 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 janji, bukan nombor } }

Katakan sekarang kita memutuskan bahawa untuk nombor sifar yang diberikan kita harus mengembalikan sifar, dan untuk nombor kurang daripada sifar - pengecualian. Untuk ini, kaedah Promise.reject akan membantu kita:

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 janji yang ditolak } }
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak