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!