Memahami Corak Pelupus Janji
Dalam pengaturcaraan tak segerak, mengurus sumber seperti sambungan pangkalan data dengan selamat tanpa membocorkannya boleh menjadi mencabar. Corak pelupusan janji muncul sebagai penyelesaian kepada isu ini dengan memautkan pemilikan sumber dengan skop pelaksanaan.
Masalah dengan Kod Anda
Kod yang disediakan menunjukkan senario di mana sambungan pangkalan data mungkin bocor jika tidak dikeluarkan dengan betul selepas setiap panggilan ke getDb. Ini akhirnya boleh membekukan aplikasi apabila sumber menjadi kehabisan.
Corak Pelupus
Corak pelupusan menguatkuasakan hubungan tegar antara sumber dan kod yang menggunakannya. Apabila sumber terikat pada konteks pelaksanaan tertentu, ia boleh dikeluarkan dengan yakin setelah kod selesai dilaksanakan. Ini menghapuskan risiko kebocoran sumber. Sintaksnya menyerupai:
withResource(function(resource){ return fnThatDoesWorkWithResource(resource); // returns a promise }).then(function(result){ // resource disposed here });
Menggunakan Corak Pelupus
Menggunakan corak pelupusan pada kod anda akan menghasilkan perkara berikut:
function withDb(work){ var _db; return myDbDriver.getConnection().then(function(db){ _db = db; // keep reference return work(db); // perform work on db }).finally(function(){ if (_db) _db.release(); }); }
Menggunakan fungsi ini, kod yang bermasalah boleh ditulis semula kepada:
withDb(function(conn){ return conn.query("SELECT name FROM users"); }).then(function(users){ // connection released here });
Faedah dan Kes Penggunaan
Corak pelupusan memastikan sumber dikeluarkan dengan sewajarnya, menghapuskan kebocoran . Pelaksanaannya berleluasa di perpustakaan seperti Sequelize dan Knex, menunjukkan kepelbagaiannya. Ia juga boleh dilanjutkan untuk mengawal tugas lain, seperti menyembunyikan pemuat selepas semua permintaan AJAX selesai.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Kebocoran Sumber dengan Corak Pelupus Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!