If you don't like nested callbacks, you can always flatten it with named 
functions:

```js
CDN.use(config.CDN.baseUrl, cdn_next)

function cdn_next(req, res, next){
    if(err) { next(); throw err; }
    fs.lstat(config.base+"/cdn"+req.url, fs_lstat_next)
}

function fs_lstat_next(err,stats){
    if(stats.isSymbolicLink()) {
        fs.readlink(config.base+"/cdn"+req.url, fs_readlink_next)
    }
}

function fs_readlink_next(err, linkstr){
  // and so on
}
```


15.09.2014, 20:27, "Ingwie Phoenix" <ingwie2...@googlemail.com>:
> Hai, everyone.
>
> So I just figured out that Connect's static file servers dont work well with 
> symlinks...so I had tow rite myself a little workaround, a fallback router, 
> per-se. But whilst I did so, I had a nice meeting with the callback hell. 
> Here's my code:
>
>             CDN.use(config.CDN.baseUrl, function(req, res, next){
>                 if(err) { next(); throw err; }
>                 fs.lstat(config.base+"/cdn"+req.url, function(err,stats){
>                     if(stats.isSymbolicLink()) {
>                         fs.readlink(config.base+"/cdn"+req.url, function(err, 
> linkstr){
>                             if(err) throw err;
>                             log.info("Redirecting request \""+req.url+"\" to 
> \""+linkstr);
>                             fs.readFile(linkstr, function(err, data){
>                                 if(err) throw err;
>                                 
> res.writeHead(200,{"Content-type":"text/html"});
>                                 res.end(data);
>                             });
>                         });
>                     }
>                 });
>             });
>         });
>
> Okay...thats lots. And how does one get around this and into a bit of nicer 
> code? It almost looks like a little pyramid there...
>
> Kind regards, Ingwie.
>
> --
> Job board: http://jobs.nodejs.org/
> New group rules: 
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules: 
> 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 unsubscribe from this group and stop receiving emails from it, send an 
> email to nodejs+unsubscr...@googlegroups.com.
> To post to this group, send email to nodejs@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/nodejs/AA9F0C8A-93DF-4797-9270-941CFDA759CE%40googlemail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/458501410800372%40web30g.yandex.ru.
For more options, visit https://groups.google.com/d/optout.

Reply via email to