Comprendre le modèle Promise Disposer
Dans le code donné, la fonction getDb() renvoie une promesse représentant une connexion à la base de données. Les promesses sont couramment utilisées pour gérer des opérations asynchrones, mais elles peuvent entraîner des fuites de ressources si les ressources qu'elles acquièrent ne sont pas correctement libérées.
Le modèle Disposer
Le broyeur de promesses Le modèle résout ce problème en associant une portée à une ressource. Lorsque la portée prend fin, la ressource est automatiquement libérée. Dans d'autres langages de programmation, ce modèle est connu sous le nom de « try-with-resource » ou « RAII ».
Application du modèle
Dans notre cas, nous créons un fonction withDb() qui accepte un rappel pour effectuer un travail sur la connexion à la base de données. Dans le rappel, nous pouvons exécuter des requêtes ou effectuer d'autres opérations. La fonction withDb() garantit que la connexion est libérée une fois le rappel terminé.
Exemple de code
Le code suivant illustre le modèle de suppression appliqué à notre exemple d'origine :
function withDb(work) { var db; return myDbDriver.getConnection().then(function(connection) { db = connection; // Keep reference to release later return work(db); // Perform work on database }).finally(function() { if (db) db.release(); // Release the connection }); } withDb(function(conn) { return conn.query("SELECT name FROM users"); }).then(function(users) { // Connection released here });
En utilisant le modèle Disposer, nous garantissons que la connexion à la base de données est toujours libérée, que le rappel s'exécute avec succès ou rencontre une erreur. Cela permet d'éviter les fuites de ressources et garantit une bonne gestion des ressources.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!