Berikut ialah beberapa tajuk gaya soalan yang sesuai dengan artikel yang disediakan: * Cara Mencapai Pelaksanaan Segerak dengan Rantai Janji: Panduan untuk Teknik `promiseWhile` dan Pengurangan Susunan yang Dipermudahkan * S

Linda Hamilton
Lepaskan: 2024-10-28 11:52:00
asal
780 orang telah melayarinya

Here are a few question-style titles that fit the provided article:

* How to Achieve Synchronous Execution with Promise Chains: A Guide to Simplified `promiseWhile` and Array Reduction Techniques
* Synchronous Promise Loops Made Easy:  `PromiseWhile` and

Cara Membuat Gelung Segerak dengan Rantai Janji

Masalah:

Membina gelung untuk memastikan pelaksanaan segerak panggilan janji dan penyata pengelogan seterusnya boleh mencabar. Ini benar terutamanya apabila menggunakan perpustakaan seperti Bluebird.

Penyelesaian 1 (Fungsi promiseWhile Ringkas):

<code class="javascript">var Promise = require('bluebird');

var promiseWhile = function(condition, action) {
    var resolver = Promise.defer();

    var loop = function() {
        if (!condition()) return resolver.resolve();
        return Promise.cast(action())
            .then(loop)
            .catch(resolver.reject);
    };

    loop();

    return resolver.promise;
};</code>
Salin selepas log masuk

Versi ringkas fungsi promiseWhile ini memerlukan panggilan balik yang dihantar sebagai hujah kepada parameter keadaan dan tindakan.

Penyelesaian 2 (Menggunakan Pengurangan Tatasusunan):

Pendekatan alternatif ialah mengurangkan tatasusunan alamat e-mel dan membuat penyegerakan yang sepadan panggilan untuk setiap:

<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

Pendekatan ini mewujudkan rantaian .then() rata dan mengekalkan susunan asal respons.

Penggunaan:

Memanggil fetchUserDetails mengambil pelbagai alamat e-mel:

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

Pendekatan ini menghapuskan keperluan untuk kaunter luar atau fungsi keadaan. Had ditentukan oleh panjang tatasusunan e-mel.

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk gaya soalan yang sesuai dengan artikel yang disediakan: * Cara Mencapai Pelaksanaan Segerak dengan Rantai Janji: Panduan untuk Teknik `promiseWhile` dan Pengurangan Susunan yang Dipermudahkan * S. 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