Qaysi Promise turlarini bilasiz?
sobes.tech AI
AIdan javob
Node.js da katta promiss turlari:
-
Basic Promise: Bu kelajakdagi qiymatlar yoki xatoliklar uchun konteyner. U uch holatda bo'ladi:
pending(kutilmoqda),fulfilled(muvaffaqiyatli bajarildi),rejected(rad etildi).new Promise()konstruktor yordamida yaratiladi.// Asosiy promiss yaratish const myPromise = new Promise((resolve, reject) => { // Asinxron operatsiya setTimeout(() => { const success = true; if (success) { resolve("Operatsiya muvaffaqiyatli yakunlandi"); } else { reject("Xatolik yuz berdi"); } }, 1000); }); -
Promise.resolve(): Darhol
fulfilledholatiga o'tadigan va berilgan qiymat bilan ishlaydigan promiss yaratadi.// Yechilgan promiss yaratish const resolvedPromise = Promise.resolve("Bu allaqachon yechilgan promiss"); -
Promise.reject(): Darhol
rejectedholatiga o'tadigan va xato sababi bilan ishlaydigan promiss yaratadi.// Rad etilgan promiss yaratish const rejectedPromise = Promise.reject(new Error("Bu rad etilgan promiss")); -
Promise.all(): Promisslar ro'yxatini qabul qiladi va yangi promiss qaytaradi. Bu barcha promisslar muvaffaqiyatli yakunlanganda
fulfilledholatiga o'tadi. Qiymat, kirish promisslar bilan bir xil tartibda natijalar massividir. Agar biron promiss rad etilsa,Promise.all()darhol rad etiladi va rad etish sababi birinchi rad etilgan promiss bilan bo'ladi.// Promise.all() dan foydalanish const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = new Promise((resolve, reject) => setTimeout(() => resolve(3), 100)); Promise.all([promise1, promise2, promise3]) .then((values) => { // values [1, 2, 3] bo'ladi }) .catch((error) => { // Xatolarni boshqarish }); -
Promise.allSettled(): Promisslar ro'yxatini qabul qiladi va yangi promiss qaytaradi. Bu barcha promisslar yakunlanganda
fulfilledyokirejectedholatiga o'tadi. Qiymat, har bir promissning natijasini tavsiflovchi obyektlar massividir (holat va qiymat/sababi).Promise.all()dan farqli o'laroq, darhol rad etilmaydi.// Promise.allSettled() dan foydalanish const promiseA = Promise.resolve("muvaffaqiyat"); const promiseB = Promise.reject("xato"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results obyektlar massividir: // [{status: 'fulfilled', value: 'muvaffaqiyat'}, {status: 'rejected', reason: 'xato'}] }); -
Promise.race(): Promisslar ro'yxatini qabul qiladi va yangi promiss qaytaradi. Birinchi yakunlangan promissning natijasi/sababi bilan
fulfilledyokirejectedholatiga o'tadi.// Promise.race() dan foydalanish const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Men tezman!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Men sekinman..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value "Men tezman!" bo'ladi }); -
Promise.any(): Promisslar ro'yxatini qabul qiladi va yangi promiss qaytaradi. Birinchi muvaffaqiyatli yakunlangan promissning qiymati bilan
fulfilledholatiga o'tadi. Agar barchasi rad etilsa,Promise.any()AggregateErrorxatosini qaytaradi, bu xato barcha rad etilgan promisslarning sabablari bilan bo'ladi. Node.js 12 dan boshlab mavjud.// Promise.any() dan foydalanish const promiseFail1 = Promise.reject("Xato 1"); const promiseSuccess = Promise.resolve("Muvaffaqiyat!"); const promiseFail2 = Promise.reject("Xato 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value "Muvaffaqiyat!" bo'ladi }) .catch((error) => { // AggregateError ni boshqarish, agar hamma promisslar rad etilsa });