რომელი Promise-ის ტიპებს იცნობ?
sobes.tech AI
პასუხი AI-სგან
Node.js-ში მთავარი დაპირებების ტიპები:
-
ძირითადი დაპირება: წარმოადგენს კონტეინერს მომავალი მნიშვნელობებისთვის ან შეცდომებისთვის. აქვს სამი მდგომარეობა:
pending(მიმდინარეობს),fulfilled(წარმატებით დასრულდა),rejected(უარყოფილია შეცდომით). შექმნილიაnew Promise()კონსტრუქტორით:// ძირითადი დაპირების შექმნა const myPromise = new Promise((resolve, reject) => { // ასინქრონული ოპერაცია setTimeout(() => { const success = true; if (success) { resolve("ოპერაცია წარმატებით დასრულდა"); } else { reject("შეცდომა მოხდა"); } }, 1000); }); -
Promise.resolve(): ქმნის დაპირებას, რომელიც დაუყოვნებლივ გადადის
fulfilledმდგომარეობაში მითითებული მნიშვნელობით:// განკუთვნილი დაპირების შექმნა const resolvedPromise = Promise.resolve("ეს უკვე შესრულებული დაპირებაა"); -
Promise.reject(): ქმნის დაპირებას, რომელიც დაუყოვნებლივ გადადის
rejectedმდგომარეობაში მითითებული შეცდომის მიზეზით:// უარყოფილი დაპირების შექმნა const rejectedPromise = Promise.reject(new Error("ეს უარყოფილი დაპირებაა")); -
Promise.all(): იღებს დაპირებების მასივ და აბრუნებს ახალ დაპირებას. ეს ახალი დაპირება გადადის
fulfilledმდგომარეობაში, როდესაც ყველა დაპირება წარმატებით დასრულდება. მნიშვნელობა იქნება შედეგების მასივი, იგივე წესრიგში, როგორც შემავალი დაპირებები. თუ რომელიმე დაპირება ვერ შესრულდა,Promise.all()უარყოფილია პირველი უარყოფილი დაპირებით:// Promise.all() გამოყენება 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] }) .catch((error) => { // შეცდომების დამუშავება }); -
Promise.allSettled(): იღებს დაპირებების მასივ და აბრუნებს ახალ დაპირებას. ეს ახალი დაპირება გადადის
fulfilledანrejectedმდგომარეობაში, როდესაც ყველა დაპირება დასრულდება. მნიშვნელობა იქნება ობიექტების მასივი, რომლებიც აღწერენ თითოეული დაპირების შედეგს:// Promise.allSettled() გამოყენება const promiseA = Promise.resolve("წარმატება"); const promiseB = Promise.reject("შეცდომა"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results იქნება ობიექტების მასივი: // [{status: 'fulfilled', value: 'წარმატება'}, {status: 'rejected', reason: 'შეცდომა'}] }); -
Promise.race(): იღებს დაპირებების მასივ და აბრუნებს ახალ დაპირებას. ეს ახალი დაპირება გადადის
fulfilledანrejectedმდგომარეობაში, როდესაც პირველი დაპირება, რომელიც ან წარმატებით დასრულდა, ან უარყოფილი, დასრულდება:// Promise.race() გამოყენება const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("მე სწრაფი ვარ!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("მე ნელი ვარ..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value იქნება "მე სწრაფი ვარ!" }); -
Promise.any(): იღებს დაპირებების მასივ და აბრუნებს ახალ დაპირებას. ეს ახალი დაპირება გადადის
fulfilledმდგომარეობაში, როდესაც პირველი წარმატებით დასრულებული დაპირება იპოვება. თუ ყველა დაპირება უარყოფილია,Promise.any()აბრუნებს შეცდომასAggregateError, რომელიც შეიცავს ყველა უარყოფილი დაპირების მიზეზებს. მომსახურება Node.js 12-დან:// Promise.any() გამოყენება const promiseFail1 = Promise.reject("შეცდომა 1"); const promiseSuccess = Promise.resolve("წარმატება!"); const promiseFail2 = Promise.reject("შეცდომა 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value იქნება "წარმატება!" }) .catch((error) => { // დამუშავება `AggregateError`-ის, თუ ყველა დაპირება უარყოფილია });