2010-11-08 4 views
5

Ist es möglich, verkettete Methoden zu erstellen, dieErstellen Sie verkettete Methoden in node.js?

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

Die in node.js wie diese asynchron ist nicht blockierend zu sagen.

+0

Wenn es nicht blockiert ist, sollte nicht irgendwo eine Callback-Funktion übergeben werden? –

+0

@Matthew: Ja sollte es. Also frage ich mich, ob es eine Möglichkeit gibt, eine Methodenverkettung zu erstellen, die asynch ist. Vielleicht mit einer Bibliothek, die irgendwie automatisch damit umgehen könnte. – ajsie

Antwort

8

Sie wollen im Grunde abstrakt die asynchrone Art der Datei-Handling-Operationen auf Ihrem API.

Es kann getan werden, würde ich Ihnen empfehlen, einen Blick auf die folgenden Artikel zu geben:

Der Artikel von Dustin Diaz geschrieben wurde, der die @anywhere JavaScript API arbeitet zur Zeit an, und er macht genau das, was Sie wollen. Mit einer einfachen Queue-Implementierung kann eine flüssige Schnittstelle erstellt werden, die unabhängig von jedem Callback ist.

Die asynchronicity ist versteckt und es wird intern von Ihrer API behandelt, es ist eine nette und einfache Technik.

+0

Gibt es dafür eine Bibliothek? – ajsie

+0

Der Link @anywhere ist tot :( –

+0

+1 für eine Bibliothek. Ich bin auf https://github.com/FuturesJS/FuturesJS gestoßen, das eine API "chainify" hat, kann aber keine Informationen darüber finden, wie man es benutzt –

0

Sicher, wie jedes JavaScript, geben Sie nur ein Objekt mit dieser Methode zurück.

Ein mögliches Layout (unter vielen).

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

Sorry, ich habe vergessen zu sagen, dass der Code in Node.js asynchron sein muss. Ich habe den Beitrag bearbeitet. – ajsie