capypad
0 Tage Serie
javascript / expert
Snippet

Explizites Ressourcenmanagement mit Symbol.dispose

Das 'using'-Schlüsselwort führt in Kombination mit Symbol.dispose ein deterministisches Ressourcenmanagement ein. Es stellt sicher, dass die Bereinigungslogik sofort ausgeführt wird, wenn die Variable den Scope verlässt, wodurch Speicherlecks oder offene Dateihandles ohne manuelle try-finally-Blöcke vermieden werden.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TempFile {
constructor(path) {
this.path = path;
console.log(`File ${path} opened.`);
}
[Symbol.dispose]() {
console.log(`File ${this.path} closed and deleted.`);
}
}
 
{
using file = new TempFile('test.txt');
// Resource is bound to this block scope
}
// Automatically disposed here
Erklärung
1
using file = new TempFile(...)
Deklariert eine Ressource, die am Ende des Blocks automatisch freigegeben wird.
2
[Symbol.dispose]() { ... }
Definiert die Standardmethode, die von der Engine für die synchrone Bereinigung aufgerufen wird.