Konsep Utama:
Operasi Asynchronous Operasi:new Promise((resolve, reject) => { ... })
. Setiap resolve
menerima hasil janji sebelumnya. reject
.then()
Menguruskan ralat menggunakan , yang mengendalikan penolakan di mana -mana di dalam rantai. .then()
.then()
.catch()
. Sesuai untuk tugas pembersihan.
.catch()
.finally()
, , dan .finally()
menawarkan cara yang canggih untuk menguruskan pelbagai janji.
Promise.all
Promise.race
Sebelum janji, panggilan balik digunakan untuk operasi tak segerak. Panggilan balik bersarang (neraka panggil balik) membawa kepada kod yang kompleks dan sukar dikekalkan. Janji menawarkan alternatif yang lebih bersih dan lebih mudah dibaca. Promise.any
Promise.allSettled
Contoh Janji Mudah:
menggunakan
dan :
const myPromise = new Promise((resolve, reject) => { // Asynchronous operation (e.g., network request) setTimeout(() => { const success = true; // Simulate success or failure if (success) { resolve("Operation successful!"); } else { reject("Operation failed!"); } }, 1000); });
Janji rantaian untuk pelaksanaan berurutan: .then()
.catch()
myPromise .then(result => console.log(result)) // Handles successful resolution .catch(error => console.error(error)); // Handles rejection
Kaedah lanjutan:
myPromise .then(result => { console.log(result); return anotherPromise(); // Return another promise to continue the chain }) .then(nextResult => console.log(nextResult)) .catch(error => console.error(error));
Promise.all([promise1, promise2, ...])
: menunggu semua janji untuk diselesaikan. Menolak jika ada janji yang ditolak. Promise.allSettled([promise1, promise2, ...])
: menunggu semua janji untuk menyelesaikan (menyelesaikan atau menolak), mengembalikan pelbagai hasil. Promise.any([promise1, promise2, ...])
: menyelesaikan dengan hasil janji pertama untuk menyelesaikannya. Menolak jika semua janji menolak. Promise.race([promise1, promise2, ...])
: menyelesaikan atau menolak dengan hasil janji pertama untuk menyelesaikan. async/await
(gula sintaksis):
async/await
Memudahkan kod berasaskan janji:
const myPromise = new Promise((resolve, reject) => { // Asynchronous operation (e.g., network request) setTimeout(() => { const success = true; // Simulate success or failure if (success) { resolve("Operation successful!"); } else { reject("Operation failed!"); } }, 1000); });
memilih pendekatan yang betul:
async/await
Promise
Gunakan .then()
.catch()
Apakah janji Chaining? .finally()
Menghubungkan Multiple .then()
Menunggu pelbagai janji untuk diselesaikan secara serentak. Promise.all
berkaitan dengan janji? Ini sintaks bersih untuk bekerja dengan janji. async/await
dan dengan URL imej sebenar jika anda mahu memasukkan imej. Atas ialah kandungan terperinci Gambaran Keseluruhan Janji JavaScript - Sitepoint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!