Memahami Corak Pelupus Janji
Anda telah menemui corak pelupusan janji dalam kod anda, tetapi tujuannya masih sukar difahami. Artikel ini bertujuan untuk menjelaskan konsep dan menunjukkan penggunaannya.
Gambaran Keseluruhan Masalah
Dalam coretan kod anda:
<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>
Anda menghadapi isu ini kemungkinan kebocoran sumber jika anda mengabaikan untuk melepaskan sambungan pangkalan data selepas setiap panggilan getDb. Ini boleh membawa kepada pembekuan sistem jika melebihi had sumber.
Memperkenalkan Corak Pelupus
Corak pelupus janji mewujudkan hubungan yang kukuh antara skop kod dan sumber itu memiliki. Dengan mengikat sumber kepada skop, anda memastikan ia dikeluarkan segera apabila skop tamat, menghapuskan risiko pengawasan. Corak ini mempunyai persamaan dengan penggunaan C#, Python dengan, try-with-resource Java dan C RAII.
Struktur Corak
Corak pelupusan mengikut tertentu struktur:
<code class="javascript">withResource(function (resource) { return fnThatDoesWorkWithResource(resource); // returns a promise }).then(function (result) { // resource disposed here });</code>
Menggunakannya pada Kod Anda
Dengan memfaktorkan semula kod anda ke dalam corak pelupusan:
<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>
Anda kini boleh menulis semula kod anda sebelum ini sebagai:
<code class="javascript">withDb(function (conn) { return conn.query("SELECT name FROM users"); }).then(function (users) { // connection released here });</code>
Pastikan sumber dikeluarkan dalam blok akhirnya untuk menjamin pelupusan yang betul.
Contoh Dunia Sebenar
Contoh ketara corak pelupusan dalam amalan termasuk Sequelize dan Knex (Pembina pertanyaan Rak Buku). Aplikasinya meliputi pengurusan proses tak segerak yang kompleks, seperti menunjukkan dan menyembunyikan penunjuk pemuatan berdasarkan penyiapan berbilang permintaan AJAX.
Atas ialah kandungan terperinci Apakah Corak Pelupus Janji dan Bagaimana Ia Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!