> The 'readable' event fires as soon as *any* data is added to the > internal buffer, but only if a previous read() call returned null. If > you never got a null read, then you haven't exhausted the buffer, so > there's no need to emit 'readable', since presumably you already know > it's readable.
Is needReadable set to true when you create the socket or do I have to call read() right after making the socket? I looked through the ReadableStream code and couldn't find a path that sets it to true. I'm using new fs.ReadStream(null, {fd: 4}). On Monday, May 6, 2013 4:59:39 PM UTC-4, Isaac Schlueter wrote: > > > Basically the loop is because the "readable" event doesn't fire until > the buffer is filled up and if you want to get data immediately, then you > can't rely on "readable"? > > The 'readable' event fires as soon as *any* data is added to the > internal buffer, but only if a previous read() call returned null. If > you never got a null read, then you haven't exhausted the buffer, so > there's no need to emit 'readable', since presumably you already know > it's readable. > > > It would seem (from the docs) that read() without any limit returns the > whole buffer, so how would there be more data the next time you call it? > > The length of the returned data from read() is implementation-defined. > In objectMode streams, it'll always be one "thing", but in > binary/string streams it can be any amount of data. > > If you're using the stream.Readable base class, then yes, read() will > always return the full buffer, *unless* you're piping, in which case, > it returns the top chunk in the list, so as to avoid an unnecessary > copy in the case where there's more than one chunk ready. > > > On Mon, May 6, 2013 at 11:10 AM, James Hartig > <faste...@gmail.com<javascript:>> > wrote: > > Sorry to be late to the party... > > > > Basically the loop is because the "readable" event doesn't fire until > the > > buffer is filled up and if you want to get data immediately, then you > can't > > rely on "readable"? > > > > It would seem (from the docs) that read() without any limit returns the > > whole buffer, so how would there be more data the next time you call it? > > > > > > On Sunday, April 14, 2013 4:57:49 PM UTC-4, Jorge wrote: > >> > >> On 30/03/2013, at 00:56, Isaac Schlueter wrote: > >> > >> > ```javascript > >> > var chunk; > >> > while (null !== (chunk = rs.read())) { > >> > doSomething(chunk); > >> > } > >> > ``` > >> > >> I use to write code like that too but it might break it seems, look: > >> > >> <https://bugs.webkit.org/show_bug.cgi?id=114594> > >> > >> this works: > >> > >> function works (s) { > >> var pos; > >> var n= 0; > >> var t; > >> var r= ""; > >> var o= > "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; > >> var p= > "5678901234nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"; > >> while (n < s.length) { > >> t= s[n]; > >> pos= o.indexOf(t); > >> r+= (pos >= 0) ? p[pos] : t; > >> n++; > >> } > >> return r; > >> } > >> > >> this doesn't: > >> > >> function fails (s) { > >> var pos, n = 0, > >> t, r = "", > >> o = > "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", > >> p = > "5678901234nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"; > >> while (n < s.length) { > >> r += ((pos = o.indexOf(t = s[n++])) >= 0) ? p[pos] : t; > >> } > >> return r; > >> } > >> > >> -- > >> ( Jorge )(); > > > > -- > > -- > > 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 nod...@googlegroups.com<javascript:> > > To unsubscribe from this group, send email to > > nodejs+un...@googlegroups.com <javascript:> > > 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+un...@googlegroups.com <javascript:>. > > 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.