You cannot say that "there isn't a way to get rid of callbacks", because 
there ARE ways. 

Solutions like streamline.js or fibers DO EXIST and have been around for a 
more than a year. They allow you to write non bocking code without 
callbacks. Maybe you don't like these solutions but that's a different 
problem.

People keep equating "asynchronous" with "callbacks" and this is just 
wrong. Asynchronous is a behavior, callbacks just a mechanism; and there 
are other mechanisms than callbacks to deal with asynchronous behaviors: an 
underscore marker in streamline, async/await keywords in jscex/F#, yield in 
fibers, etc. When I write:

    var next_id = rclient.incr("next_id", _);

This code is asynchronous. And the underscore marker indicates where the 
code may yield. So nothing's hidden and the execution model is the same as 
with async callbacks: non blocking, single threaded event loop, non 
preemptive.

And BTW, there are also lots of synchronous callbacks around. For example:

    arr.forEach(function(elt) {
      // synchronous!!
    });

ASYNCHRONOUS !== CALLBACKS

Bruno

On Tuesday, March 20, 2012 4:36:30 AM UTC+1, Mihai Tomescu wrote:
>
> Like it was mentioned, there isn't a way to get rid of callbacks because 
> that's what gets us evented io in the first place.
>
> So at the end of the day, it's how you want to handle async code.
>
> My preference is the lightest possible abstraction written by @substack 
> https://github.com/substack/node-seq. No fibers, thread-like things or 
> any other crazyness, it just runs stuff sequentially.
>
> An yeah writing blocking code is a Bad Thing™ in node.
>
> On Sunday, March 18, 2012 8:23:37 PM UTC-4, Angelo Chen wrote:
>>
>> Hi, 
>>
>> got this : 
>>
>> function get_next_id() { 
>>         rclient.incr("next_id", function(err, reply) { 
>>                         return reply 
>>         }); 
>> } 
>>
>> will call this with: 
>>
>>    var next_id = get_next_id() 
>>
>> this won't work, because function returns even before 'reply' was 
>> taken from rclient( a redis), one solution is, passing a call back to 
>> the function, is there any other way? thanks. 
>>
>> Angelo 
>>
>
On Tuesday, March 20, 2012 4:36:30 AM UTC+1, Mihai Tomescu wrote:
>
> Like it was mentioned, there isn't a way to get rid of callbacks because 
> that's what gets us evented io in the first place.
>
> So at the end of the day, it's how you want to handle async code.
>
> My preference is the lightest possible abstraction written by @substack 
> https://github.com/substack/node-seq. No fibers, thread-like things or 
> any other crazyness, it just runs stuff sequentially.
>
> An yeah writing blocking code is a Bad Thing™ in node.
>
> On Sunday, March 18, 2012 8:23:37 PM UTC-4, Angelo Chen wrote:
>>
>> Hi, 
>>
>> got this : 
>>
>> function get_next_id() { 
>>         rclient.incr("next_id", function(err, reply) { 
>>                         return reply 
>>         }); 
>> } 
>>
>> will call this with: 
>>
>>    var next_id = get_next_id() 
>>
>> this won't work, because function returns even before 'reply' was 
>> taken from rclient( a redis), one solution is, passing a call back to 
>> the function, is there any other way? thanks. 
>>
>> Angelo 
>>
>

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