Skip to content

Commit da69e2a

Browse files
gnwxsumn2u
authored andcommitted
translated promise-async-await section
1 parent 86a6141 commit da69e2a

File tree

3 files changed

+149
-0
lines changed

3 files changed

+149
-0
lines changed

tr/promise-async-await/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
layout: editorial
3+
chapter: 17
4+
pageNumber: 87
5+
---
6+
7+
# Bölüm 18
8+
9+
# Promise, async/await
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
chapter: 18
3+
pageNumber: 91
4+
---
5+
6+
# Async/Await
7+
8+
Async/Await, Promise'leri daha kolay yazmaya yarayan bir JavaScript özelliğidir. `async` anahtar kelimesi, bir Promise döndüren ve `await` sözdizimi, JavaScript'in o Promise'nin çözülmesi ve değerinin döndürülmesini beklemesini sağlar.
9+
10+
```javascript
11+
//async function f
12+
async function f() {
13+
return 1;
14+
}
15+
// promise being resolved
16+
f().then(alert); // 1
17+
```
18+
19+
Yukarıdaki örnek, aşağıdaki şekilde de yazılabilir:
20+
21+
```javascript
22+
function f() {
23+
return Promise.resolve(1);
24+
}
25+
26+
f().then(alert); // 1
27+
```
28+
29+
`async`, işlevin bir Promise döndürmesini sağlar ve Promise olmayanları ona sarar. `await` ile, JavaScript'in Promise çözülene ve değeri döndürilene kadar beklemesini sağlayabiliriz. 
30+
31+
```javascript
32+
async function f() {
33+
let promise = new Promise((resolve, reject) => {
34+
setTimeout(() => resolve("Welcome to Learn JavaScript!"), 1000);
35+
});
36+
37+
let result = await promise; // wait until the promise resolves (*)
38+
alert(result); // "Welcome to Learn JavaScript!"
39+
}
40+
41+
f();
42+
```
43+
44+
{% hint style="warning" %}
45+
`await` anahtar kelimesi yalnızca `async` fonksiyonları içinde kullanılabilir.
46+
{% endhint %}

tr/promise-async-await/promise.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
chapter: 18
3+
pageNumber: 89
4+
---
5+
6+
# Bölüm 18
7+
8+
# Promise, async/await
9+
10+
Bir popüler kitap yazarı olduğunuzu ve belirli bir günde yeni bir kitap yayınlamayı planladığınızı hayal edin. Bu kitaba ilgi duyan okuyucular, bu kitabı listelerine ekliyor ve yayınlandığında veya yayın tarihi ertelendiğinde bile bilgilendiriliyor. Yayın günü geldiğinde, herkes bilgilendirilir ve kitabı satın alabilir ve tüm taraflar mutlu olur. Bu, programlamada gerçekleşen gerçek hayattan bir analojidir.
11+
12+
1. Bir "_producing code_" (_üreten kod_) zaman alan ve bir şeyleri başaran bir şeydir. Burada kitap yazarı.
13+
2. Bir "_consuming code_" (_tüketen kod_) üreten kodu hazır olduğunda tüketen kişidir. Bu durumda "okur"dur.
14+
3. "üreten kod" ile "tüketen kod" arasındaki bağlantı, sonuçları "üreten kod" dan "tüketen kod" a ulaştıracağı için bir sözleşme olarak adlandırılabilir.
15+
16+
# Promise
17+
18+
Yaptığımız analoji, JavaScript promise nesnesi için de geçerlidir. promise nesnesi için kurucu sözdizimi şöyledir:
19+
20+
```javascript
21+
let promise = new Promise(function (resolve, reject) {
22+
// executor (the producing code, "writer")
23+
});
24+
```
25+
26+
Burada, `new Promise`'ye bir işlev geçirilir, buna executor da denir ve oluşturulurken otomatik olarak çalışır. Sonuç veren üreten kodu içerir. `resolve` ve `rejects` JavaScript tarafından sağlanan ve sonuçlar üzerine çağrılan argümanlardır.
27+
28+
- `resolve(value):` sonuç üzerine value döndüren bir callback fonksiyonu
29+
- `reject(error)`: hata üzerine `error` döndüren bir callback fonksiyonu, bir error nesnesi döndürür
30+
31+
![Promise with resolve and reject callbacks](../../.gitbook/assets/async_await.png)
32+
33+
`new Promise` kurucusu tarafından döndürülen `promise` nesnesinin iç özellikleri şunlardır:
34+
35+
- `state` - başlangıçta `pending`, ardından `fulfill` olmak üzere üzerine resolve veya `rejected` üzerine `reject` çağrıldığında değişir
36+
37+
- result - başlangıçta `undefined`, ardından `resolve` üzerine `value` veya `reject` üzerine `error` değişir
38+
39+
{% hint style="warning" %}
40+
Promise özelliklerine `state` ve `result` erişilemez. Promise'leri işlemek için promise yöntemlerine ihtiyaç vardır.
41+
{% endhint %}
42+
43+
Promise örneği:
44+
45+
```javascript
46+
let promiseOne = new Promise(function (resolve, reject) {
47+
// the function is executed automatically when the promise is constructed
48+
49+
// after 1-second signal that the job is done with the result "done"
50+
setTimeout(() => resolve("done"), 1000);
51+
});
52+
53+
let promiseTwo = new Promise(function (resolve, reject) {
54+
// the function is executed automatically when the promise is constructed
55+
56+
// after 1-second signal that the job is done with the result "error"
57+
setTimeout(() => reject(new Error("Whoops!")), 1000);
58+
});
59+
```
60+
61+
Burada, `promiseOne` "yerine getirilmiş promise" örneğidir, çünkü değerler başarıyla çözüldüğünden, `promiseTwo` ise reddedildiği için "reddedilmiş promise" örneğidir. Reddedilmiş veya yerine getirilmiş bir promise, yerleşik promise olarak adlandırılır, aksine başlangıçta bekleyen promise. Promise'den tüketen fonksiyon `.then` ve `.catch` yöntemleri kullanılarak kaydedilebilir. Ayrıca, önceki yöntemlerin tamamlanmasından sonra temizleme veya sonlandırma için `.finally` yöntemini de ekleyebilirsiniz.
62+
63+
```javascript
64+
let promiseOne = new Promise(function (resolve, reject) {
65+
setTimeout(() => resolve("done!"), 1000);
66+
});
67+
68+
// resolve runs the first function in .then
69+
promiseOne.then(
70+
(result) => alert(result), // shows "done!" after 1 second
71+
(error) => alert(error) // doesn't run
72+
);
73+
74+
let promiseTwo = new Promise(function (resolve, reject) {
75+
setTimeout(() => reject(new Error("Whoops!")), 1000);
76+
});
77+
78+
// reject runs the second function in .then
79+
promiseTwo.then(
80+
(result) => alert(result), // doesn't run
81+
(error) => alert(error) // shows "Error: Whoops!" after 1 second
82+
);
83+
84+
let promiseThree = new Promise((resolve, reject) => {
85+
setTimeout(() => reject(new Error("Whoops!")), 1000);
86+
});
87+
88+
// .catch(f) is the same as promise.then(null, f)
89+
promiseThree.catch(alert); // shows "Error: Whoops!" after 1 second
90+
```
91+
92+
{% hint style="warning" %}
93+
`Promise.then()` metodunda, her iki callback argümanının da kullanımı isteğe bağlıdır.
94+
{% endhint %}

0 commit comments

Comments
 (0)