Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memastikan Pelaksanaan Gelung Segerak dengan Operasi Janji?

Bagaimana untuk Memastikan Pelaksanaan Gelung Segerak dengan Operasi Janji?

Linda Hamilton
Lepaskan: 2024-11-03 00:13:29
asal
1067 orang telah melayarinya

How to Ensure Synchronous Loop Execution with Promise Operations?

Menyelaraskan Gelung dengan Janji

Pernyataan Masalah

Bagaimanakah kita boleh memastikan gelung berulang secara serentak, melaksanakan setiap lelaran promise dan operasi pembalakan berikutnya (logger.log(res)) dalam susunan yang betul?

Penyelesaian

Eschewing PromiseWhile

Walaupun fungsi promiseWhile boleh memudahkan gelung dengan janji, ia tidak menjamin susunan pelaksanaan untuk operasi berantai.

Menggunakan Reduce untuk Serialisasi

Untuk mengekalkan yang diingini pesanan, kita boleh memanfaatkan Array.prototype.reduce() untuk mencipta rantaian rata operasi .then(). Ini menghapuskan keperluan untuk rekursi.

<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

Penggunaan Sampel

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

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

Faedah

Pendekatan ini menghapuskan pembolehubah tambahan dan fungsi keadaan diperlukan dalam kaedah promiseWhile. Selain itu, ia memudahkan kod dan memastikan susunan pelaksanaan janji yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Pelaksanaan Gelung Segerak dengan Operasi Janji?. 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