コンテキスト:
当面の問題には、責任のあるコードでの潜在的なリソース リークが関係していますデータベースからユーザーを取得します。コードの非同期的な性質により、データベース接続が即座に解放されることを保証することが困難になります。
Promise Disposer パターンの定義:
Promise Disposer パターンは、関連付けに使用される手法です。特定のコード範囲を持つリソース。この手法により、コードの実行が完了するとすぐにリソースが解放されることが保証され、リソース リークが防止されます。
コードへのパターンの適用:
提供されたコード スニペットでは、getDb () 関数はデータベース接続を確立します。リソース リークの問題に対処するには、ディスポーザ パターンを使用してコードをリファクタリングできます:
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(); }); }
ディスポーザ パターンを使用すると、コードを次のように変更できます:
withDb(function(conn) { return conn.query("SELECT name FROM users"); }).then(function(users) { // Database connection released here });
ディスポーザ パターンの利点:
Promise ディスポーザ パターンを採用すると:
以上がPromise ディスポーザ パターンはリソース リークをどのように防ぐのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。