Asenkron generator'lar
- JavaScript kursu
- İleri seviye
- Ders 52/100
- 5 dk
async function* ile asenkron generator'ları ve for await...of ile gezinmeyi öğrenirsin.
Asenkron generatorler
async function* ile asenkron generator tanımlarsın. Bu generator, yield ile Promise dönebilir ve gövdesinde await kullanabilir. Her yield, bir Promise çözülene kadar bekleyebilir.
async function* stream() {
yield await fetch('/data');
yield await fetch('/more');
}Asenkron generatorlar, ağ istekleri veya veritabanı sorguları gibi zaman alan işlemleri adım adım üretmek için idealdir.
for await...of döngüsü
Asenkron bir generatoru gezmek için for await...of döngüsü kullanılır. Bu döngü, her değeri bir Promise olarak bekler ve sırayla verir. for...of kullanamazsın çünkü değerler zaman içinde gelir.
for await (const chunk of stream()) {
console.log(chunk);
}Her chunk için döngü gövdesi çalışır; generator bittiğinde döngü sonlanır.
Uygulama Asenkron generator yaz
fetchNumbers adında bir asenkron generator yaz: yield await Promise.resolve(1), yield await Promise.resolve(2), yield await Promise.resolve(3) olsun. for await...of ile generatoru gez ve her değeri console.log ile yazdır.
Başlangıç kodu
// fetchNumbers asenkron generator: await ile 1, 2, 3 değerlerini üretsin
// for await...of ile her değeri yazdırÖrnek çözüm
async function* fetchNumbers() {
yield await Promise.resolve(1);
yield await Promise.resolve(2);
yield await Promise.resolve(3);
}
for await (const n of fetchNumbers()) {
console.log(n);
}Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Asenkron bir generatoru gezmek için hangi döngü kullanılır?
- forEach
- for...in
- for await...of Doğru cevap
- while...await
Açıklama: for await...of asenkron generatorlardan değerleri sırayla bekleyerek alır.
2 for await döngüsünü tamamla
async function* stream() {
yield 1;
}
____ (const value of stream()) {
console.log(value);
}
async function* stream() {
yield 1;
}
for await (const value of stream()) {
console.log(value);
}
Açıklama: for await...of ile asenkron generator gezilir.
3 Asenkron generator terimlerini eşleştir
| Kavram | Anlamı |
|---|---|
async function* |
asenkron generator tanımlar |
for await...of |
asenkron generatoru gezer |
await |
Promise bekler |