Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Генераторы в ES6 (https://javascript.ru/forum/dom-window/71461-generatory-v-es6.html)

daima 20.11.2017 20:39

Генераторы в ES6
 
Собственно не пойму как эта шняга работает. Расстуждения после чтения теории:

function* powGenerator() {
    var result = Math.pow(yield "a", yield "b");
    yield console.log("cc"); 
    return result;
}
 //Создаем генератор
    var g = powGenerator();

//Начали выполнять, но споткнулись на первом yield, выводим "a"
    console.log(g.next().value);  

//Продолжили выполнение, но споткнулись на 2м елде, вместо yield "a" будет 10, выведем "b"
    console.log(g.next(10).value); 

//Продолжили выполнение, но споткнулись на 3м елде, вместо yield "b" будет 2, надо вывести  консольлогконсольлога, т.е. "cc"
    console.log(g.next(2).value); 

//Продолжаем выполнение, вместо yield console.log("cc"); по идее должно быть "xx", далее возвращаем значение  result
console.log(g.next("xx").value);


Т.е. по идее в консоли должно быть "a", "b", "cc", "xx"(или 100). Вместо этого: "a", "b", "cc", undefined, 100. Откуда взялись undefined, 100?

vasa_c 20.11.2017 23:19

результат console.log(), возвращаемый третим елдом - undefined.

daima 21.11.2017 10:36

Цитата:

Сообщение от vasa_c (Сообщение 470819)
результат console.log(), возвращаемый третим елдом - undefined.

А почему? Можно пояснить механизм?

Alexandroppolus 21.11.2017 14:38

https://learn.javascript.ru/generator тут норм. разъяснено, даже я понял


Часовой пояс GMT +3, время: 11:01.