Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mencapai Perlaksanaan Segerak Gelung Janji sambil Memelihara Perintah?

Bagaimana untuk Mencapai Perlaksanaan Segerak Gelung Janji sambil Memelihara Perintah?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 14:01:02715semak imbas

How to Achieve Synchronous Execution of Promise Loops while Preserving Order?

Mencapai Pelaksanaan Segerak bagi Gelung Janji

Bagaimanakah anda memastikan penyegerakan panggilan janji dan operasi pembalakan berantai semasa lelaran gelung? Pendekatan awal menggunakan promiseWhile() nampaknya menjanjikan tetapi menimbulkan kebimbangan tentang mengekalkan perintah pelaksanaan yang betul.

Sebaliknya, pertimbangkan untuk memanfaatkan keupayaan janji yang wujud untuk tugas ini. Dengan mentakrifkan masalah sebagai satu siri panggilan tak segerak untuk mengambil butiran pengguna dan mengekalkan susunan respons asal, kami boleh menggunakan Array.prototype.reduce() untuk membina rantai .then() rata.

Penyelesaian:

Kod berikut menunjukkan pendekatan ini:

<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>

Fungsi ini mengambil pelbagai alamat e-mel dan mengembalikan Janji. Fungsi reduce() berulang melalui tatasusunan dan melaksanakan janji getUser untuk setiap e-mel. Keputusan dilog serentak dalam panggilan balik done().

Memanggil Fungsi:

Untuk memanggil fungsi, isikan tatasusunan alamat e-mel (arrayOfEmailAddys) dan gunakan ia seperti berikut:

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

Kod ini mencipta rantai janji linear, memastikan setiap janji diselesaikan secara berurutan dan operasi pembalakan dilaksanakan dalam susunan yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Perlaksanaan Segerak Gelung Janji sambil Memelihara Perintah?. 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