<p dir="ltr">In light of the recent thread discussing async and await keywords, I thought it'd be appropriate to raise this point again, understanding it may be too late to make a change.</p>
<p dir="ltr">As my original post details, the concept of `return` within a generator is surprising in its difference in behavior from `yield`. </p>
<p dir="ltr">This does not do as 'expected' in a for-in:</p>
<p dir="ltr">function * threeCount() {<br>
  yield 1;<br>
  yield 2;<br>
  return 3;<br>
}</p>
<p dir="ltr">The argument for allowing return values was that usages in the vein of task.js will use the return value as a real return value and the yields for scheduling. </p>
<p dir="ltr">If we' re going to have async and await serve the scheduling purpose as well, can we remove the 'return' foot gun from generators? It sounds like it's just a stopgap until async-await, and a painful one, IMO. A syntax error on a generator that returns values would make the scheduling (async-await) vs iteration (generator) use cases much more clear. It'll be much easier for new JS devs to understand generators.</p>

<p dir="ltr">Happy to be shutdown again, just thought it was worth reconsidering with new async-await keywords in play.</p>
<div class="gmail_quote">On 27/09/2013 3:46 PM, "Brandon Benvie" <<a href="mailto:bbenvie@mozilla.com">bbenvie@mozilla.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 9/26/2013 10:40 PM, Brandon Benvie wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
```js<br>
function* foo() {<br>
  yield 'what';<br>
  yield 'ever';<br>
  return "DONE";<br>
}<br>
<br>
function* bar() {<br>
  console.log(yield* foo());<br>
}<br>
```<br>
</blockquote>
<br>
Err, this logs "DONE" when you do:<br>
<br>
```js<br>
var gen = bar();<br>
gen.next();<br>
gen.next();<br>
gen.next();<br>
```<br>
but you got the idea...<br>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</blockquote></div>