yield*
Tavsif
yield* operatori bajarilishni boshqa generator funksiyasi yoki iteratsiya qilinadigan obyektga topshiradi.
yield* qanday ishlaydi
yield singari bitta qiymat berish o‘rniga, yield* JavaScript’ga boshqa ketma-ketlik "ichiga kirish", uning barcha elementlarini birma-bir chiqarib olish va tugagach, qaytib kelishni buyuradi.
Ichma-ichlik o‘xshatishi
Ko‘chish uchun qutilarni joylayotganingizni tasavvur qiling.
Oddiy yield — katta ko‘chish qutingizga bitta buyumni solishga o‘xshaydi.
yield* dan foydalanish esa allaqachon joylangan bir nechta kichikroq qutilarni ham qo‘shib olishga o‘xshaydi.
Misol
// Create a Generator function
function* countToThree() {
yield 1;
yield 2;
yield 3;
}
function* masterGenerator() {
yield "Start";
// Delegate to the countToThree generator
yield* countToThree();
yield "End";
}
const iterator = masterGenerator();
let text = "";
for (const value of masterGenerator()) {
text += value;
}
O‘zingiz sinab ko‘ring »
U qanday ishlaydi
yield* dan keyin iteratsiya qilinadigan obyekt (masalan, massiv yoki boshqa generator funksiyasi) yoziladi.
U shu obyekt bo‘ylab aylanib chiqadi va topgan har bir qiymatni beradi (yield).
Uni massivlar bilan ham ishlatish mumkin!
yield* istalgan iteratsiya qilinadigan obyekt bilan ishlagani uchun, undan oddiy JavaScript massivlari yoki stringlarini chalkash sikl yozmasdan chiqarib berishning qisqa yo‘li sifatida foydalanishingiz mumkin.
Misol
// Create an Array
const food = ["Milk", "Bread", "Eggs"];
function* groceryList() {
yield "Apples";
// Loop the array yield* food;
yield "Chocolate";
}
for (const item of groceryList()) {
text += item;
}
O‘zingiz sinab ko‘ring »
Brauzerlarda qo‘llab-quvvatlash
yield* — ECMAScript6 (ES6 2015) imkoniyati.
JavaScript 2015 2017-yil iyunidan beri barcha brauzerlarda qo‘llab-quvvatlanadi:
| Chrome 51 |
Edge 15 |
Firefox 54 |
Safari 10 |
Opera 38 |
| 2016-yil may | 2017-yil aprel | 2017-yil iyun | 2016-yil sentabr | 2016-yil iyun |
Shuningdek qarang:
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
