5

Is it possible to create chained methods that are asynchronous like this in node.js

File.create('file.jpg').rename('renamed.jpg').append('Hello World')

That is to say non-blocking.

2
  • If it's non-blocking, shouldn't there be a callback function passed in somewhere? Commented Nov 8, 2010 at 6:31
  • @Matthew: Yeah it should. So I wonder if there is some way to create a method chaining that is asynch. Maybe with a library that could handle it automatically somehow. Commented Nov 8, 2010 at 6:48

2 Answers 2

8

You basically want to abstract the asynchronous nature of the file-handling operations on your API.

It can be done, I would recommend you to give a look to the following article:

The article was written by Dustin Diaz, who currently works on the @anywhere JavaScript API, and he does exactly what you want, using a using a simple Queue implementation, a fluent interface can be created, being independent of any callback.

The asynchronicity is hidden and it is handled internally by your API, it's a nice and simple technique.

Sign up to request clarification or add additional context in comments.

2 Comments

The @anywhere link is dead :(
+1 for a library. I did come across github.com/FuturesJS/FuturesJS that has a chainify API, but can't find info on how to use it
0

Sure, like any JavaScript, you just return an object that has that method.

One possible layout (among many).

var File = new (function() 
{ 
  this.create = function(str) 
  { 
    return this; 
  } 
  this.rename = function(str) 
  { 
    return this; 
  } 
})(); 

1 Comment

Sorry I forgot to tell you that the code has to be asynchronous in Node.js. I have edited the post.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.