Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencegah Kebocoran Sumber dengan Corak Pelupus Janji?

Bagaimana untuk Mencegah Kebocoran Sumber dengan Corak Pelupus Janji?

Barbara Streisand
Barbara Streisandasal
2024-10-18 14:51:03769semak imbas

How to Prevent Resource Leaks with the Promise Disposer Pattern?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn