2012-07-27 126 views
6

我的一般问题是我可以使用什么技术来确保资源在Javascript中被清除/释放?目前,我正在采取C(无转换)的方法来查找每个执行路径以返回或异常,并确保清理。我在Node.js中使用对象成员函数中的互斥(通过文件锁定)(我需要互斥,因为我运行了Node.js应用程序的多个实例,并有竞争条件时不同的实例与文件系统交互)。Javascript自动释放资源(如RAII)

例如,在C++中我会做类似下面的东西:

void MyClass::dangerous(void) { 
    MyLock lock(&this->mutex); 
    ... 
    // at the end of this function, lock will be destructed and release this->mutex. 
} 

据我所知,JavaScript不提供任何RAII功能。在C中,如果发生错误,我将使用goto s展开我的资源分配,以便我只有一个函数的返回路径。

什么是在Javascript中实现类似效果的一些技巧?

回答

1

使用在范围结束时调用的回调列表。需要时全部打电话给他们。

该方法用于例如去初始化附加到浏览器窗口的附加处理程序。包含取消初始化代码的回调函数存储在窗口卸载事件处理的列表中。

不幸的是,由于异常安全要求,这种方法大多不适合范围管理。