2010-11-08 13 views
5

E 'possibile creare i metodi di concatenate che sono asincrone come questo in node.jsCreare metodi concatenati in node.js?

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

vale a dire non-blocking.

+0

Se non è bloccante, non dovrebbe esserci una funzione di callback passata da qualche parte? –

+0

@Matthew: Sì, dovrebbe. Quindi mi chiedo se c'è un modo per creare un metodo di concatenamento che è asincrono. Forse con una libreria che potrebbe gestirlo automaticamente in qualche modo. – ajsie

risposta

8

Che, fondamentalmente, vogliono astratta la natura asincrona delle operazioni di gestione dei file sul vostro API.

Si può fare, io mi consiglia di dare un'occhiata al seguente articolo:

L'articolo è stato scritto da Dustin Diaz, che attualmente lavora sul @anywhere JavaScript API, e fa esattamente quello che vuoi, usando una semplice implementazione in coda, una interfaccia fluente può essere creata, indipendentemente da ogni callback.

L'asincronicità è nascosta e viene gestita internamente dall'API, è una tecnica semplice e piacevole.

+0

Esiste una libreria per questo? – ajsie

+0

Il collegamento @anywhere è morto :( –

+0

+1 per una libreria.Ho trovato https://github.com/FuturesJS/FuturesJS che ha un'API 'chainify', ma non riesce a trovare informazioni su come usarlo –

0

Certo, come qualsiasi JavaScript, si restituisce solo un oggetto che ha quel metodo.

Un possibile layout (tra molti).

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

Scusa se ho dimenticato di dirti che il codice deve essere asincrono in Node.js. Ho modificato il post. – ajsie

Problemi correlati