Keadaan Promise dalam JavaScript
Promise boleh berada dalam satu daripada tiga keadaan. Apabila dicipta, promise berada dalam keadaan menunggu (pending), dan kemudian boleh menjadi terlaksana (fulfilled), mengembalikan hasil yang diperoleh, atau ditolak (rejected), mengembalikan sebab penolakan. Anda boleh melihat peralihan dari satu keadaan ke keadaan lain dengan menjalankan kod berikut:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // letakkan sama ada true atau false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('ralat dalam promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // setiap saat kita output promise ke konsol
}, 1000);
Perhatikan bahawa keadaan fulfilled dan rejected adalah tetap: jika promise telah beralih kepada salah satu daripada keadaan ini, maka ia tidak boleh lagi beralih kepada keadaan lain. Mari kita lihat contoh. Dalam kod berikut, panggilan reject akan berlaku terlebih dahulu, jadi panggilan resolve akan diabaikan:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('ralat')), 1000);
setTimeout(() => resolve('diabaikan'), 2000);
});
Buat sebuah promise yang akan terlaksana dengan jayanya selepas beberapa ketika. Outputkannya ke konsol dan kaji keadaan awalnya dan keadaan selesai.
Buat sebuah promise yang akan terlaksana dengan kegagalan selepas beberapa ketika. Outputkannya ke konsol dan kaji keadaan awalnya dan keadaan selesai.