Rumah >hujung hadapan web >tutorial js >Bagaimanakah Promise Chaining Dapat Memudahkan Janji Bersarang dalam Operasi Tak Segerak?

Bagaimanakah Promise Chaining Dapat Memudahkan Janji Bersarang dalam Operasi Tak Segerak?

Barbara Streisand
Barbara Streisandasal
2024-12-10 15:10:14256semak imbas

How Can Promise Chaining Simplify Nested Promises in Asynchronous Operations?

Merungkai Janji Bersarang

Pengenalan

Janji bersarang boleh timbul apabila bekerja dengan operasi tak segerak yang dibina di atas satu sama lain. Dalam kod yang disediakan, fungsi viewFile membuat berbilang permintaan rangkaian menggunakan boxContentRequest dan boxViewerRequest. Permintaan ini pada masa ini berstruktur dalam janji bersarang, menjadikan kod itu sukar untuk dipatuhi.

Janji Rantai

Untuk menghapuskan janji bersarang, kami boleh menggunakan rantaian janji. Teknik ini membolehkan kami menyambungkan berbilang operasi tak segerak secara berurutan, di mana output satu janji menjadi input seterusnya.

Kod Refactored

Kod refactored di bawah mencapai yang dikehendaki chaining:

exports.viewFile = function (req, res) {
  var fileId = req.params.id;
  boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken)
    .then(function (response) {
      // Return the next promise directly
      return boxViewerRequest('documents', { url: response.request.href }, 'POST');
    })
    .then(function (response) {
      // Return the final promise directly
      return boxViewerRequest('sessions', { document_id: response.body.id }, 'POST');
    })
    .then(function (response) {
      console.log(response);
    });
};

Penjelasan

Dalam kod yang difaktorkan semula, kami mengembalikan janji seterusnya terus dari setiap panggilan balik. Ini membolehkan kami merantai janji dengan lancar, memastikan aliran pelaksanaan mengikut turutan yang diingini.

Corak Rantai Janji Generik

Corak generik untuk rantaian janji adalah seperti berikut :

// Option 1: Single-line syntax
somePromise
  .then((r1) => nextPromise)
  .then((r2) => anyValue);

// Option 2: Multi-line syntax
somePromise
  .then(function (r1) {
    return nextPromise;
  })
  .then(function (r2) {
    return anyValue;
  });

Kedua-dua pilihan akan menyelesaikan janji muktamad dengan nilai anyValue. Corak ini menyediakan cara ringkas dan elegan untuk menyambungkan operasi tak segerak, memudahkan struktur kod dan meningkatkan kebolehbacaan.

Atas ialah kandungan terperinci Bagaimanakah Promise Chaining Dapat Memudahkan Janji Bersarang dalam Operasi Tak Segerak?. 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