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
Linda Hamiltonasal
2024-11-03 00:13:291058semak imbas

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>

Penggunaan Sampel

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

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

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!

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