Cómo esperar en Node.js

Aquí hay una pregunta sobre qué pensaría que sería un patrón simple en el nodo js.

Aquí está mi ejemplo en coffeescript:

db_is_open = false db.open -> db_is_open = true wait = -> wait() until db_is_open 

Y aquí de nuevo en javascript:

 var db_is_open = false; db.open(function() { db_is_open = true; }); function wait() {}; while (not db_is_open) { wait()}; 

Esto no funciona en absoluto porque el bucle while nunca cede el control, lo que creo que tiene sentido. Sin embargo, ¿cómo puedo indicar a la función de espera que intente la próxima callback en la cola?

¿Por qué está esperando y no solo está utilizando una callback que se ejecuta dentro de la función pasada a db.open ? Este es un código de nodo bastante idiomático:

 db.open(function() { // db is now open, let's run some more code execute_db_query(); }); 

Básicamente, simplemente debe seguir los patrones establecidos en la documentación .

Me gusta usar el módulo asíncrono cuando tengo bits de código que necesitan ejecutarse sincrónicamente.

 var async = require('async'); async.series([ function(next){ db.open(next) } , function(next){ db.loadSite('siteName', next) } ], function(err){ if(err) console.log(err) else { // Waits for defined functions to finish console.log('Database connected') } })