Bagaimana untuk Mencegah Kebocoran Sumber dengan Corak Pelupus Janji?

Barbara Streisand
Lepaskan: 2024-10-18 14:51:03
asal
863 orang telah melayarinya

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
 });
Salin selepas log masuk

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();
    });
}
Salin selepas log masuk

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
 });
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan