Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menolak Janji untuk Kod JavaScript Asynchronous yang Lebih Bersih?

Bagaimanakah Saya Boleh Menolak Janji untuk Kod JavaScript Asynchronous yang Lebih Bersih?

Barbara Streisand
Barbara Streisandasal
2024-12-09 22:40:10734semak imbas

How Can I Unnest Promises for Cleaner Asynchronous JavaScript Code?

Merangkai Janji untuk Mengalih Keluar Struktur Bersarang

Apabila bekerja dengan operasi tak segerak, janji menyediakan cara yang mudah untuk mengendalikan panggilan balik dan mengekalkan kebolehbacaan kod. Walau bagaimanapun, janji bersarang dengan cepat boleh menjadikan kod rumit dan sukar untuk diikuti. Artikel ini membincangkan cara mengalih keluar janji bersarang dan merantainya untuk kejelasan yang lebih baik.

Pendekatan

Untuk mengalih keluar janji bersarang, kami mengembalikan janji baharu daripada setiap panggilan balik kemudian. Ini membolehkan kami merantai janji satu demi satu, menghapuskan keperluan untuk struktur bersarang. Berikut ialah versi diubah suai bagi kod yang disediakan:

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

Dalam kod ini, setiap satu panggilan balik mengembalikan janji untuk permintaan seterusnya, memastikan pelaksanaan diteruskan secara berurutan.

Umum Corak

Corak untuk merantai janji adalah sebagai berikut:

somePromise.then(function(r1) {
    return nextPromise.then(function(r2) {
        return anyValue;
    });
}) // resolves with anyValue

     ||
    \||/
     \/

somePromise.then(function(r1) {
    return nextPromise;
}).then(function(r2) {
    return anyValue;
}) // resolves with anyValue as well

Apabila mengembalikan janji baharu, nilai yang terhasil daripada janji itu diserahkan kepada pengendali seterusnya dalam rantaian. Sebagai alternatif, jika janji yang dikembalikan oleh pengendali adalah yang terakhir dalam rantaian, nilai azam janji itu diserahkan kepada pengguna.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menolak Janji untuk Kod JavaScript Asynchronous yang Lebih Bersih?. 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