I understand that you don't prefer the style of using a while (true) loop, but why do say it can be an "outright bug". Do you mean that something unexpected might happen?
Lots of programmers object to assignment statements in conditions. On Fri, Mar 29, 2013 at 6:56 PM, Isaac Schlueter <[email protected]> wrote: > Commented on the gist, but for posterity: > > ---- > > I'd consider `while (true)` to be at least a red flag, if not an > outright bug most of the time. > > This is somewhat clearer, imo: > > ```javascript > var chunk; > while (null !== (chunk = rs.read())) { > doSomething(chunk); > } > ``` > > Of course if your goal is just to pull data out asap, you may as well > use `rs.on('data', function(chunk) { ... })` which basically does > exactly that. > > > On Fri, Mar 29, 2013 at 1:57 PM, Mark Volkmann > <[email protected]> wrote: > > Thanks! So it sounds like this would be preferred. > > > > https://gist.github.com/anonymous/5273601 > > > > > > On Fri, Mar 29, 2013 at 3:38 PM, Andrew Hart <[email protected]> > wrote: > >> > >> On Friday, March 29, 2013 1:55:36 PM UTC-6, Mark Volkmann wrote: > >>> > >>> Is this the recommended way to read from a Readable stream in 0.10? > >>> > >> I can only share what I've discovered. > >> > >>> > >>> Can I assume that I will always get a 'readable" event when the stream > is > >>> ready to be read? > >>> > >>> Can I assume I will get a new 'readable' event after every call to > >>> rs.read unless the end of the stream was reached? > >>> > >> http://nodejs.org/api/stream.html#stream_readable_read_size_1 > >> If there is no data to consume, or if there are fewer bytes in the > >> internal buffer than the size argument, thennull is returned, and a > future > >> 'readable' event will be emitted when more is available. > >> > >> I don't think the documentation allows you to assume a new readable > event > >> if read did not return null. That's consistent with my experiments as > well. > >> > >>> > >>> Is it better to do something like this inside the 'readable' callback > to > >>> continue calling read until it returns null? > >>> > >>> while (true) { > >>> var chunk = rs.read(); > >>> if (!chunk) break; > >>> // do something with chunk > >>> } > >>> > >> I think you need to specifically check for null. Otherwise, the stream > >> might return the empty string or, if it is an "objectMode" stream > (useful, > >> but only mentioned in passing here: > >> http://nodejs.org/api/stream.html#stream_new_stream_readable_optionsreading > >> the source suggests objectMode works fine for writable, transform, and > >> duplex streams as well.), some other falsey value. > >> > >> Andrew Hart > >> > >> -- > >> -- > >> Job Board: http://jobs.nodejs.org/ > >> Posting guidelines: > >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > >> You received this message because you are subscribed to the Google > >> Groups "nodejs" group. > >> To post to this group, send email to [email protected] > >> To unsubscribe from this group, send email to > >> [email protected] > >> For more options, visit this group at > >> http://groups.google.com/group/nodejs?hl=en?hl=en > >> > >> --- > >> You received this message because you are subscribed to the Google > Groups > >> "nodejs" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to [email protected]. > >> For more options, visit https://groups.google.com/groups/opt_out. > >> > >> > > > > > > > > > > -- > > R. Mark Volkmann > > Object Computing, Inc. > > > > -- > > -- > > Job Board: http://jobs.nodejs.org/ > > Posting guidelines: > > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > > You received this message because you are subscribed to the Google > > Groups "nodejs" group. > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to > > [email protected] > > For more options, visit this group at > > http://groups.google.com/group/nodejs?hl=en?hl=en > > > > --- > > You received this message because you are subscribed to the Google Groups > > "nodejs" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- R. Mark Volkmann Object Computing, Inc. -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
