Rumah  >  Artikel  >  hujung hadapan web  >  Cara Memastikan Pengeluaran Sumber yang Betul dalam Pengaturcaraan Asynchronous: Memahami Corak Pelupus Janji

Cara Memastikan Pengeluaran Sumber yang Betul dalam Pengaturcaraan Asynchronous: Memahami Corak Pelupus Janji

Susan Sarandon
Susan Sarandonasal
2024-10-18 14:55:031033semak imbas

How to Ensure Proper Resource Release in Asynchronous Programming: Understanding the Promise Disposer Pattern

Memahami Corak Pelupus Janji

Corak pelupusan janji menangani kebimbangan bersama dalam pengaturcaraan tak segerak: memastikan sumber dikeluarkan dengan betul apabila tidak lagi diperlukan. Ia menjadi sangat relevan apabila bekerja dengan sumber yang memerlukan pembersihan atau pelepasan yang jelas, seperti sambungan pangkalan data atau fail sementara.

Pertimbangkan contoh kod yang disediakan:

<code class="javascript">function getDb() {
    return myDbDriver.getConnection();
}

var users = getDb().then(function(conn) {
     return conn.query("SELECT name FROM users").finally(function(users) {
         conn.release();
     });
});</code>

Dalam kod ini, pangkalan data sambungan diperoleh dan digunakan untuk melaksanakan pertanyaan. Walau bagaimanapun, adalah penting untuk melepaskan sambungan secara eksplisit selepas pertanyaan selesai untuk mengelakkan kebocoran sumber.

Memperkenalkan corak pelupusan janji membolehkan kami menggabungkan skop kod dengan pemilikan sumber. Dengan corak ini, kami mengikat sumber kepada skop, memastikan ia dikeluarkan apabila skop selesai, dengan berkesan menghalang pelepasan terlupa.

Untuk melaksanakan corak ini, kami menentukan fungsi yang merangkumi pemerolehan dan pelepasan sumber dalam skop fungsi kerja:

<code class="javascript">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();
    });
}</code>

Dengan membungkus pelaksanaan fungsi kerja dalam skop ini, kami menjamin bahawa sambungan akan ditutup tanpa mengira sama ada fungsi kerja menyelesaikan atau menolak berjaya.

<code class="javascript">withDb(function(conn) {
     return conn.query("SELECT name FROM users");
 }).then(function(users) {
     // Connection released here
 });</code>

Corak pelupusan janji menyediakan cara yang elegan dan boleh dipercayai untuk mengurus sumber dalam pengaturcaraan tak segerak, memastikan pelepasan yang betul dan mencegah kebocoran sumber. Ia sering digunakan dalam pelbagai rangka kerja dan perpustakaan untuk mengendalikan senario pengurusan sumber yang kompleks.

Atas ialah kandungan terperinci Cara Memastikan Pengeluaran Sumber yang Betul dalam Pengaturcaraan Asynchronous: Memahami 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