Kontext:
Das vorliegende Problem betrifft ein potenzielles Ressourcenleck im verantwortlichen Code zum Abrufen von Benutzern aus einer Datenbank. Aufgrund der asynchronen Natur des Codes ist es schwierig sicherzustellen, dass die Datenbankverbindung umgehend freigegeben wird.
Definieren des Promise-Disposer-Musters:
Das Promise-Disposer-Muster ist eine Technik zur Verknüpfung eine Ressource mit einem bestimmten Codeumfang. Diese Technik garantiert, dass die Ressource freigegeben wird, sobald die Codeausführung abgeschlossen ist, und verhindert so Ressourcenlecks.
Anwenden des Musters auf den Code:
Im bereitgestellten Codeausschnitt ist die getDb ()-Funktion stellt eine Datenbankverbindung her. Um das Problem des Ressourcenlecks zu beheben, kann der Code mithilfe des Disposer-Musters umgestaltet werden:
function withDb(work) { var _db; return myDbDriver.getConnection().then(function(db) { _db = db; // Keep reference to release return work(db); // Perform work on the database }).finally(function() { if (_db) _db.release(); }); }
Mithilfe des Disposer-Musters kann der Code wie folgt geändert werden:
withDb(function(conn) { return conn.query("SELECT name FROM users"); }).then(function(users) { // Database connection released here });
Vorteile des Disposer-Musters:
Durch die Verwendung des Promise-Disposer-Musters:
Das obige ist der detaillierte Inhalt vonWie verhindert das Promise-Disposer-Muster Ressourcenlecks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!