Le 20 août 2014 à 10:42, Andy Wingo <wi...@igalia.com> a écrit : > On Tue 19 Aug 2014 08:48, Claude Pache <claude.pa...@gmail.com> writes: > >> Le 19 août 2014 à 06:47, Kevin Smith <zenpars...@gmail.com> a écrit : >> >> It appears that the current state of affairs is that the argument >> supplied to the first call of `next` on a newborn generator is >> "ignored and inaccessibe". >> >> Is there any way that the generator function can have access to that >> lost data? >> >> This can be worked around. Basically, ask the generator to advance to >> the first `yield` at instantiation, and retrieve the value of the >> "first" `next()` with that `yield`. For example: > > This has the disadvantage of starting computation in the generator, of > course, before it has been asked for. >
Indeed. Here is a version that don't start computation early. ```js const ignoreFirst = genFn => class extends genFn { next(x) { delete this.next // next calls to `next` will use directly the super method super() return super(x) } } var echo = ignoreFirst(function* echo() { var x while (true) { x = yield x } }) var iter = new echo // note: `new` is needed for correct subclassing! iter.next(4) // {value: 4, done: false} iter.next(1) // {value: 1, done: false} iter.next(6) // {value: 6, done: false} ``` —Claude _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss