TypeScript'teki Promise Sınıfı
Bu makale, TypeScript'teki Promise sınıfını açıklar.
YouTube Video
Promise
TypeScript'teki Promise
sınıfı, temel olarak JavaScript'teki Promise
ile aynıdır. Promise
, asenkron işlemleri yönetmek için yerleşik bir sınıf olup, bir asenkron işlemin tamamlandığında sonuçlarını temsil eder. Burada, Promiselerin temel kullanımını ve ilgili kavramları açıklıyoruz.
Temel Kullanım
Promise Oluşturma:
Promise
nesnesi, asenkron işlemleri sarmalamak için kullanılır. Promise
, new Promise(executor)
ile oluşturulur ve içerisinde asenkron işlemleri yürütür. executor
, argüman olarak iki fonksiyon alır: resolve
ve reject
.
1const myPromise = new Promise<number>((resolve, reject) => {
2 // Perform asynchronous operations
3 const success = true; // This is just an example
4 if (success) {
5 resolve(42); // In case of success
6 } else {
7 reject('Failed'); // In case of failure
8 }
9});
Promise Kullanımı:
Oluşturulan Promise
, then()
ve catch()
kullanılarak işlenir.
1myPromise.then((value) => {
2 console.log(`Success: ${value}`); // Process the value passed with resolve
3}).catch((error) => {
4 console.error(`Error: ${error}`); // Handle the error passed with reject
5});
finally()
yöntemi
1const myPromise = new Promise<number>((resolve, reject) => {
2 // Perform asynchronous operations
3 const success = false; // This is just an example
4 if (success) {
5 resolve(42); // In case of success
6 } else {
7 reject('Failed'); // In case of failure
8 }
9});
10
11myPromise.then((value) => {
12 console.log(`Success: ${value}`); // Process the value passed with resolve
13}).catch((error) => {
14 console.error(`Error: ${error}`); // Handle the error passed with reject
15}).finally(() => {
16 console.log('The operation has completed');
17});
finally()
yöntemi,Promise
'in yerine getirilip getirilmediğine bakılmaksızın her zaman çalıştırılacak kodu tanımlar.
Promise Zincirleme:
then()
ardından başka bir then()
bağlayarak, birden fazla asenkron işlemi sırayla bağlayabilirsiniz.
1const myPromise = new Promise<number>((resolve, reject) => {
2 // Perform asynchronous operations
3 const success = true; // This is just an example
4 if (success) {
5 resolve(42); // In case of success
6 } else {
7 reject('Failed'); // In case of failure
8 }
9});
10
11myPromise
12 .then((value) => {
13 console.log(`Success: ${value}`);
14 return value + 1; // Pass the value to the next then
15 })
16 .then((newValue) => {
17 console.log(`New value: ${newValue}`);
18 })
19 .catch((error) => {
20 console.error(`Error: ${error}`);
21 });
async/await:
TypeScript'te async
/await
kullanarak Promiseleri daha doğrudan yönetebilirsiniz. async
bir fonksiyon içinde, bir Promise'nin sonucunu beklemek için await
anahtar kelimesini kullanabilirsiniz.
1const myPromise = new Promise<number>((resolve, reject) => {
2 // Perform asynchronous operations
3 const success = true; // This is just an example
4 if (success) {
5 resolve(42); // In case of success
6 } else {
7 reject('Failed'); // In case of failure
8 }
9});
10
11async function asyncFunction() {
12 try {
13 const value = await myPromise;
14 console.log(`Success: ${value}`);
15 } catch (error) {
16 console.error(`Error: ${error}`);
17 }
18}
19
20asyncFunction();
Promise Metodları
Promise.all()
Promise.all
, birden fazla Promise'i eşzamanlı olarak çalıştırır ve hepsinin yerine getirilmesini bekler.
1const promise1 = Promise.resolve(1);
2const promise2 = Promise.resolve(2);
3const promise3 = Promise.resolve(3);
4
5Promise.all([promise1, promise2, promise3])
6 .then((results) => {
7 console.log(results); // [1, 2, 3]
8 })
9 .catch((error) => {
10 console.error('Error :', error);
11 });
then()
yalnızca tümPromise
'ler yerine getirildiğinde çağrılır. Herhangi biri başarısız olursacatch()
çağrılır.
Promise.race()
Promise.race
, birden fazla Promise arasında ilk tamamlanan Promise'in sonucunu döndürür.
1const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'First'));
2const promise2 = new Promise((resolve) => setTimeout(resolve, 500, 'Second'));
3
4Promise.race([promise1, promise2]).then((result) => {
5 console.log(result); // "First"
6});
- Bu örnekte olduğu gibi, ilk tamamlanan
Promise
'in sonucu döndürülür.
Promise.allSettled()
Promise.allSettled
, tüm Promise'lerin tamamlanmasını bekler ve hem yerine getirilmiş hem de reddedilmiş sonuçları içeren bir dizi döndürür.
1const promise1 = Promise.resolve(1);
2const promise2 = Promise.reject("Failed");
3const promise3 = Promise.resolve(3);
4
5Promise.allSettled([promise1, promise2, promise3])
6 .then((results) => {
7 results.forEach(result => console.log(result));
8 // [
9 // { status: 'fulfilled', value: 1 },
10 // { status: 'rejected', reason: 'Failed' },
11 // { status: 'fulfilled', value: 3 }
12 // ]
13 });
- Tüm
Promise
'ler tamamlandığında (fulfilled
ya darejected
),then()
çağrılır. Her sonuç, birstatus
özelliği içerir ('fulfilled'
veya'rejected'
). Başarısızlıklar diğer işlemleri etkilemez.
Promise.any()
Promise.any
, ilk Promise yerine getirilene kadar bekler ve onu döndürür.
1const promise1 = new Promise((resolve) => setTimeout(() => resolve("A ok"), 300));
2const promise2 = new Promise((_, reject) => setTimeout(() => reject("B fail"), 100));
3const promise3 = new Promise((resolve) => setTimeout(() => resolve("C ok"), 200));
4
5Promise.any([promise1, promise2, promise3])
6 .then(value => {
7 // Logs the first fulfilled value ("C ok")
8 console.log("first fulfilled:", value);
9 })
10 .catch(err => {
11 console.log("should not reach here in this example:", err);
12 });
- Birden fazla
Promise
arasında ilk yerine getirilen değeri döndürür.
Özet
TypeScript kullanarak Promiselerin türlerini doğru şekilde belirleyebilir ve daha tür-güvenli programlar yazabilirsiniz. Bu, bir Promise'nin döndüreceği değerin türünü önceden belirleyerek geliştirme sırasında hataları erken fark etmenize yardımcı olur.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.