For times when a callback will be invoked multiple times, it's better to
use an EventEmitter:

primeGenerator.on('prime', function (prime) {
  // do stuff with num
});

This allows other interested parties to be able to get the data as well.

On Fri, Apr 27, 2012 at 7:09 PM, Mark Volkmann <r.mark.volkm...@gmail.com>wrote:

> Suppose though that it's a long-running operation that may or may not
> involve I/O. Both approaches would work. Is there a clear bias toward
> streams?
>
> ---
> R. Mark Volkmann
> Object Computing, Inc.
>
> On Apr 27, 2012, at 8:45 PM, Tim Caswell <t...@creationix.com> wrote:
>
>  Since it's a sync operation, I'm assuming no threading tricks, then the
> question is sync callback vs buffering.  Sync callback has more more
> overhead since it's many more function calls, but buffering has it's
> drawbacks if you're not going to need all the answers at once.
>
> // buffering
> var primes = getPrimes(n)
>
> // iterator
> getPrimes(n, function (prime) {
> });
>
> On Fri, Apr 27, 2012 at 8:27 PM, Steve Molitor <stevemoli...@gmail.com>wrote:
>
>> Interesting question!  I'm looking forward to the answer.
>>
>> Both streams and callbacks usually involve IO, but calculating prime
>> number would not.  So it might be a special case.  But still interesting.
>>
>> Steve
>>
>>
>> On Fri, Apr 27, 2012 at 8:22 PM, Mark Volkmann <r.mark.volkm...@gmail.com
>> > wrote:
>>
>>> This is a question about recommended usage in Node.
>>> As an example, let's say I want to write a function that returns the
>>> first n prime numbers.
>>> I could write a function that takes n and a callback.
>>> It could invoke the callback once for each prime number to be returned
>>> and then invoke it with zero to signal the end.
>>>
>>> I could also write a function that takes n and returns a readable stream.
>>> The caller could listen for data events (one per prime number to be
>>> returned)
>>> and an end event.
>>>
>>> I'm pretty sure the stream approach is preferred,
>>> but would you say that the callback approach is wrong or at least
>>> discouraged?
>>>
>>> --
>>> 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
>>>
>>
>>  --
>> 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
>>
>
>  --
> 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
>
>  --
> 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
>

-- 
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

Reply via email to