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!