Rumah > Artikel > hujung hadapan web > Bagaimanakah Corak Pelupus Janji Menghalang Kebocoran Sumber dalam Operasi Asynchronous?
Memahami Corak Pelupus Janji
Dalam kod yang diberikan, fungsi getDb() mengembalikan janji yang mewakili sambungan pangkalan data. Janji biasanya digunakan untuk mengendalikan operasi tak segerak, tetapi ia boleh menyebabkan kebocoran sumber jika sumber yang mereka peroleh tidak dikeluarkan dengan betul.
Corak Pelupus
Pelupus janji corak menangani isu ini dengan mengaitkan skop dengan sumber. Apabila skop tamat, sumber dikeluarkan secara automatik. Dalam bahasa pengaturcaraan lain, corak ini dikenali sebagai "cuba-dengan-sumber" atau "RAII."
Menggunakan Corak
Dalam kes kami, kami mencipta function withDb() yang menerima panggilan balik untuk melaksanakan kerja pada sambungan pangkalan data. Dalam panggilan balik, kami boleh melaksanakan pertanyaan atau melakukan operasi lain. Fungsi withDb() memastikan sambungan dilepaskan apabila panggilan balik selesai.
Contoh Kod
Kod berikut menunjukkan corak pelupusan yang digunakan pada contoh asal kami:
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 });
Dengan menggunakan corak pelupusan, kami memastikan sambungan pangkalan data sentiasa dikeluarkan, tidak kira sama ada panggilan balik berjaya dilaksanakan atau menghadapi ralat. Ini membantu mengelakkan kebocoran sumber dan memastikan pengurusan sumber yang betul.
Atas ialah kandungan terperinci Bagaimanakah Corak Pelupus Janji Menghalang Kebocoran Sumber dalam Operasi Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!