Senario biasa melibatkan gelung melalui satu siri panggilan janji, seperti permintaan API, untuk memastikan susunan pelaksanaan dikekalkan . Bluebird menawarkan penyelesaian melalui fungsi promiseWhile. Walau bagaimanapun, terdapat kebimbangan mengenai susunan panggilan logger.log(res) dalam gelung.
Daripada menggunakan promiseWhile, pertimbangkan pendekatan berikut:
<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>
Kod ini:
Gunakan fungsi fetchUserDetails dengan susunan alamat e-mel:
<code class="javascript">// Compose an array of email addresses const arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
Pendekatan ini menghapuskan keperluan untuk rekursi, pembilang luaran dan fungsi keadaan kompleks, sambil mengekalkan penyegerakan yang dikehendaki bagi panggilan logger.log(res).
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengelogan Segerak Apabila Mengulangi Melalui Janji dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!