Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencapai Pengelogan Segerak Apabila Mengulangi Melalui Janji dalam JavaScript?

Bagaimana untuk Mencapai Pengelogan Segerak Apabila Mengulangi Melalui Janji dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-10-26 21:43:02428semak imbas

How to Achieve Synchronous Logging When Iterating Through Promises in JavaScript?

Lelaran Melalui Panggilan Janji dengan Penyegerakan

Senario biasa melibatkan gelung melalui satu siri panggilan janji, seperti permintaan API, untuk memastikan susunan pelaksanaan dikekalkan . Bluebird menawarkan penyelesaian melalui fungsi promiseWhile. Walau bagaimanapun, terdapat kebimbangan mengenai susunan panggilan logger.log(res) dalam gelung.

Penyelesaian Cadangan

Daripada menggunakan promiseWhile, pertimbangkan pendekatan berikut:

<code class="javascript">function fetchUserDetails(arr) {
    return arr.reduce(function(promise, email) {
        return promise.then(function() {
            return db.getUser(email).done(function(res) {
                logger.log(res);
            });
        });
    }, Promise.resolve());
}</code>

Kod ini:

  1. Mencipta Susunan Janji: Ia menerima tatasusunan alamat e-mel (arr) dan menyusun urutan janji berdasarkan setiap e-mel.
  2. Pelaksanaan Bersiri dengan pengurangan: Ia memanfaatkan Array.prototype.reduce untuk melaksanakan janji secara berurutan.
  3. Pesanan Terjamin: Dengan merantai janji dengan itu, ia memastikan bahawa logger.log(res) digunakan hanya selepas janji sebelumnya telah diselesaikan.

Contoh Penggunaan

Gunakan fungsi fetchUserDetails dengan susunan alamat e-mel:

<code class="javascript">// Compose an array of email addresses
const arrayOfEmailAddys = [...];

fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});</code>

Pendekatan ini menghapuskan keperluan untuk rekursi, pembilang luaran dan fungsi keadaan kompleks, sambil mengekalkan penyegerakan yang dikehendaki bagi panggilan logger.log(res).

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengelogan Segerak Apabila Mengulangi Melalui Janji dalam JavaScript?. 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