Mi pregunta general es ¿qué técnicas puedo usar para asegurar que los recursos se limpien/liberen en Javascript? Actualmente, estoy tomando el enfoque C (sin goto) de encontrar cada ruta de ejecución a una devolución o excepción en mis funciones y garantizar que se realice la limpieza.Recursos de liberación de Javascript automáticamente (como RAII)
Mi ejemplo específico es este: en Node.js estoy usando mutexes (a través de bloqueos de archivos) en las funciones miembro de objeto (necesito la exclusión mutua, porque ejecuto varias instancias de la aplicación Node.js y tengo condiciones de carrera cuando diferentes instancias interactúan con el sistema de archivos).
Por ejemplo, en C++ que haría algo como lo siguiente:
void MyClass::dangerous(void) {
MyLock lock(&this->mutex);
...
// at the end of this function, lock will be destructed and release this->mutex.
}
Por lo que yo puedo decir, JavaScript no proporciona ninguna funcionalidad RAII. En C, usaría goto
para desenrollar mi asignación de recursos en caso de error, de modo que solo tengo una ruta de retorno desde una función.
¿Cuáles son algunas técnicas para lograr un efecto similar en Javascript?