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

Barbara Streisand
Lepaskan: 2024-10-26 21:43:02
asal
427 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!