Я пытаюсь понять, как это работает. Я обработал этот код наизнанку и до сих пор не понимаю, как он возвращает значения. Я получил это из учебника по http://davidwalsh.name/es6-generatorsES6 Generator baffling me
function *foo(x) {
var y = 2 * (yield (x + 1));
var z = yield (y/3);
return (x + y + z);
}
var it = foo(5);
// note: not sending anything into `next()` here
console.log(it.next()); // { value:6, done:false }
console.log(it.next(12)); // { value:8, done:false }
console.log(it.next(13)); // { value:42, done:true }
я, кажется, несколько обхвата на первый следующий(), но следующие 2 расстроить меня со значением 8 и 42.
Надежды кто-то может помочь объяснить это, поэтому я могу попытаться понять и перейти на следующие этапы с генераторами.
Похоже, вы, по крайней мере, второй человек, чтобы быть сбит с толку этой конкретной обучающей программы. Возможно, настало время найти другую. –
Да, это дубликат, но я до сих пор не думаю, что другой вопрос ответил полностью. В обоих ответах сказано, что первое значение равно 6, но фактическое начальное значение для самого результата - 5. Я думаю, что нужно понимать разницу между тем, что контекст выполнения до выхода приостанавливается, а затем, когда он всплывает контекст выполнения и возвращает оценка. Это неправильно? – pertrai1
Я не понимаю ни одной части вашего комментария. Что вы подразумеваете под «фактическим начальным значением для самой доходности 5?»? –