Dalam tutorial ini, anda akan belajar mengenai janji-janji JavaScript dan rantai janji dengan bantuan contoh.
Dalam JavaScript, janji adalah cara yang baik untuk menangani operasi tidak segerak . Ia digunakan untuk mengetahui sama ada operasi asinkron berjaya diselesaikan atau tidak.
Janji mungkin mempunyai salah satu daripada tiga keadaan.
- Yang belum selesai
- Terpenuhi
- Ditolak
Janji bermula dalam keadaan belum selesai. Itu bermaksud prosesnya tidak lengkap. Sekiranya operasi berjaya, proses berakhir dalam keadaan yang dipenuhi. Dan, jika berlaku ralat, prosesnya berakhir dalam keadaan yang ditolak.
Sebagai contoh, apabila anda meminta data dari pelayan dengan menggunakan janji, data tersebut akan berada dalam keadaan tertunda. Apabila data berjaya tiba, data akan berada dalam keadaan yang memuaskan. Sekiranya ralat berlaku, maka ia akan berada dalam keadaan yang ditolak.
Buat Janji
Untuk membuat objek janji, kami menggunakan Promise()
konstruktor.
let promise = new Promise(function(resolve, reject)( //do something ));
The Promise()
pembina mengambil fungsi sebagai hujah. Fungsi ini juga menerima dua fungsi resolve()
dan reject()
.
Sekiranya janji itu berjaya, resolve()
fungsi dipanggil. Dan, jika berlaku ralat, reject()
fungsi dipanggil.
Mari kita anggap bahawa program di bawah adalah program tidak segerak. Maka program dapat dikendalikan dengan menggunakan janji.
Contoh 1: Program dengan Janji
const count = true; let countValue = new Promise(function (resolve, reject) ( if (count) ( resolve("There is a count value."); ) else ( reject("There is no count value"); ) )); console.log(countValue);
Pengeluaran
Janji (: "Ada nilai hitungan.")
Dalam program di atas, Promise
objek dibuat yang mengambil dua fungsi: resolve()
dan reject()
. resolve()
digunakan sekiranya proses itu berjaya dan reject()
digunakan apabila berlaku kesalahan dalam janji.
Janji itu diselesaikan sekiranya nilai kiraan itu benar.

Janji Janji JavaScript
Janji berguna apabila anda harus menangani lebih dari satu tugas tak segerak, satu demi satu. Untuk itu, kami menggunakan janji berantai.
Anda dapat melakukan operasi setelah janji diselesaikan menggunakan kaedah then()
, catch()
dan finally()
.
Kaedah JavaScript kemudian ()
The then()
kaedah yang digunakan dengan panggil balik apabila janji yang berjaya dipenuhi atau diselesaikan.
Sintaks then()
kaedah adalah:
promiseObject.then(onFulfilled, onRejected);
Contoh 2: Mengikat Janji dengan kemudian ()
// returns a promise let countValue = new Promise(function (resolve, reject) ( resolve('Promise resolved'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) .then( function successValue1() ( console.log('You can call multiple functions this way.'); ), );
Pengeluaran
Janji diselesaikan Anda boleh memanggil pelbagai fungsi dengan cara ini.
Dalam program di atas, then()
kaedah ini digunakan untuk mengaitkan fungsi sesuai dengan janji. The then()
kaedah dipanggil apabila janji itu diselesaikan dengan jayanya.
Anda boleh mengaitkan pelbagai then()
kaedah dengan janji.
Kaedah tangkapan JavaScript ()
The catch()
kaedah yang digunakan dengan panggil balik apabila sampai masa janji ditolak atau jika ralat berlaku. Sebagai contoh,
// returns a promise let countValue = new Promise(function (resolve, reject) ( reject('Promise rejected'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) // executes if there is an error .catch( function errorValue(result) ( console.log(result); ) );
Pengeluaran
Janji ditolak
Dalam program di atas, janji itu ditolak. Dan catch()
kaedah itu digunakan dengan janji untuk menangani kesalahan tersebut.

Janji JavaScript berbanding Panggilan Balik
Janji serupa dengan fungsi panggilan balik dalam arti bahawa kedua-duanya dapat digunakan untuk menangani tugas tak segerak.
Fungsi panggilan balik JavaScript juga dapat digunakan untuk melakukan tugas segerak.
Perbezaan mereka dapat diringkaskan dalam perkara berikut:
Janji JavaScript
- Sintaksnya mesra pengguna dan senang dibaca.
- Ralat pengendalian lebih mudah diuruskan.
- Contoh:
api (). kemudian (fungsi (hasil) (kembali api2 ();)). kemudian (fungsi (hasil2) (kembali api3 ();)). kemudian (fungsi (hasil3) (// lakukan kerja)). tangkapan ( fungsi (ralat) (// menangani sebarang ralat yang mungkin berlaku sebelum ini));
Panggilan balik JavaScript
- Sintaksisnya sukar difahami.
- Kesalahan pengendalian mungkin sukar dikendalikan.
- Contoh:
api (function (result) (api2 (function (result2) (api3 (function (result3) (// buat kerja jika (error) (// buat sesuatu) lain (// buat sesuatu)));));)) ;
Kaedah akhirnya JavaScript ()
You can also use the finally()
method with promises. The finally()
method gets executed when the promise is either resolved successfully or rejected. For example,
// returns a promise let countValue = new Promise(function (resolve, reject) ( // could be resolved or rejected resolve('Promise resolved'); )); // add other blocks of code countValue.finally( function greet() ( console.log('This code is executed.'); ) );
Output
This code is executed.
JavaScript Promise Methods
There are various methods available to the Promise object.
Method | Description |
---|---|
all(iterable) | Waits for all promises to be resolved or any one to be rejected |
allSettled(iterable) | Waits until all promises are either resolved or rejected |
any(iterable) | Returns the promise value as soon as any one of the promises is fulfilled |
race(iterable) | Wait until any of the promises is resolved or rejected |
reject(reason) | Returns a new Promise object that is rejected for the given reason |
resolve(value) | Returns a new Promise object that is resolved with the given value |
catch() | Appends the rejection handler callback |
then() | Appends the resolved handler callback |
finally() | Appends a handler to the promise |
To learn more about promises in detail, visit JavaScript Promises.