上下文:
當前的問題涉及負責代碼中潛在的資源洩漏用於從資料庫中檢索使用者。程式碼的非同步特性導致很難確保資料庫連線及時釋放。
定義 Promise Disposer 模式:
Promise Disposer 模式是一種用於關聯的技術具有特定程式碼範圍的資源。這種技術可以確保程式碼執行完成後立即釋放資源,從而防止資源外洩。
將模式應用到程式碼中:
在提供的程式碼片段中,getDb ()函數建立資料庫連線。為了解決資源外洩問題,可以使用disposer模式重構程式碼:
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(); }); }
使用disposer模式,程式碼可以修改如下:
withDb(function(conn) { return conn.query("SELECT name FROM users"); }).then(function(users) { // Database connection released here });
Disposer 模式的好處:
採用Promise Disposer 模式:
以上是Promise Disposer 模式如何防止資源外洩?的詳細內容。更多資訊請關注PHP中文網其他相關文章!