Come scrivere codice riutilizzabile in node.js

5

Sto cercando di capire come progettare le applicazioni node.js, ma sembra che ci sia qualcosa che non riesco a capire sulla programmazione asincrona.

Supponiamo che la mia applicazione abbia bisogno di accedere a un database. In un ambiente sincrono implementerei una classe di accesso ai dati con un metodo read (), restituendo un array associativo.

In node.js, poiché il codice viene eseguito in modo asincrono, questo metodo non può restituire un valore, quindi, dopo l'esecuzione, dovrà "fare" qualcosa come un effetto collaterale. Conterrà quindi del codice che fa qualcosa di diverso dalla semplice lettura dei dati.

Supponiamo di voler chiamare questo metodo più volte, ogni volta con un callback di successo diverso. Poiché il callback è incluso nel metodo stesso, non riesco a trovare un modo pulito per farlo senza duplicare il metodo o specificare tutte le possibili callback in un'istruzione switch lunga.

Qual è il modo corretto per gestire questo problema? Mi sto avvicinando nel modo sbagliato?

    
posta lortabac 04.09.2012 - 19:40
fonte

1 risposta

11

Poiché è possibile passare funzioni come parametri, è comune passare una funzione di "callback" a questi tipi di funzioni. Ad esempio, potresti avere una funzione di "lettura" simile a questa:

function getUser(userId, callback) {
  var mydbAPI = something;
  var myQuery = somethingElse;

  mydbAPI.getUser(myQuery, function(data) {
    //parse data a little here:
    myParsedData = ...;

    callback(myParsedData);
  });
}

Puoi quindi chiamare il metodo di lettura in questo modo:

getUser(userId, function(parsedData) {
  //...do something with parsedData
});
    
risposta data 04.09.2012 - 19:48
fonte

Leggi altre domande sui tag