Rumah  >  Artikel  >  hujung hadapan web  >  Apakah Corak Pelupus Janji dan Bagaimana Ia Berfungsi?

Apakah Corak Pelupus Janji dan Bagaimana Ia Berfungsi?

Susan Sarandon
Susan Sarandonasal
2024-10-18 14:52:02274semak imbas

What is the Promise Disposer Pattern and How Does it Work?

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!

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