Creación de devoluciones de llamada para los módulos necesarios en node.js

¿Existe alguna posibilidad de crear algún tipo de callback dentro de un módulo creado por mi cuenta?

Mi problema es que he escrito un módulo para mi aplicación. Dentro de este módulo se realiza alguna tarea y ahora mi aplicación principal debería recibir una respuesta de que el módulo terminó su tarea.

A continuación se describe lo que quiero pero no funcionará por supuesto …

//module mymod.js function start() { var done = false; //do some tasks done = true; } exports.done = done; 

Aplicación principal

 var mymod = require("./mymod.js"); while(!mymod.done) { //do some tasks } 

Me alegraría mucho si alguien pudiera ayudarme.

PD: Probé procesos secundarios (fork) para esta situación, pero como parece que copia todo el proceso, ya no puedo acceder a las capturas de video OpenCV abiertas … 🙁 Al usar módulos no encuentro este problema, en su lugar obtengo este uno para ello ^^

Sí, puede tener una callback de su módulo.

Es tan simple como

 function funcWithCallback(args, callback){ //do stuff callback(); } 

Aunque no sé lo que estás tratando de lograr, el ciclo while parece sospechoso. Probablemente debería invertir en el paquete async de npm.

asíncrono en github

EDIT: sentí la necesidad de aclarar algo. Mientras que la función anterior, de hecho, pretende que se utilice la callback en lugar del valor de retorno, no es exactamente asíncrono.

El verdadero enfoque asíncrono es hacer algo como esto:

 function funcWithCallback(args, callback){ process.nextTick(function() { //do stuff callback(); }); } 

Esto permite que la función llamada salga y difiere la ejecución de la lógica de esa función hasta la siguiente marca.

La syntax de callback:

 function start(callback) { //do some tasks callback(data); } exports.start = start; 

En cualquier lugar que requiera su módulo:

 var mymod = require("./mymod.js"); mymod.start(function(data) { //do some tasks , process data });