Bagaimana untuk Mencapai Perlaksanaan Segerak Gelung Janji sambil Memelihara Perintah?

Patricia Arquette
Lepaskan: 2024-10-29 14:01:02
asal
656 orang telah melayarinya

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

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

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!

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