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 <i...@izs.me> 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
> <r.mark.volkm...@gmail.com> 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 <hartandr...@gmail.com>
> 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 nodejs@googlegroups.com
> >> To unsubscribe from this group, send email to
> >> nodejs+unsubscr...@googlegroups.com
> >> 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 nodejs+unsubscr...@googlegroups.com.
> >> 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 nodejs@googlegroups.com
> > To unsubscribe from this group, send email to
> > nodejs+unsubscr...@googlegroups.com
> > 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 nodejs+unsubscr...@googlegroups.com.
> > 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 nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> 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 nodejs+unsubscr...@googlegroups.com.
> 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 nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
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 nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to