一般的なシナリオには、実行順序が確実に維持されるように、API リクエストなどの一連の Promise 呼び出しをループすることが含まれます。 。 Bluebird は、promisewhile 関数を通じてソリューションを提供します。ただし、ループ内の logger.log(res) 呼び出しの順序について懸念があります。
promisewhile を使用する代わりに、次のアプローチを検討してください:
<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>
このコード:
電子メール アドレスの配列を使用して fetchUserDetails 関数を呼び出します。
<code class="javascript">// Compose an array of email addresses const arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
このアプローチでは、logger.log(res) 呼び出しの必要な同期を維持しながら、再帰、外部カウンター、および複雑な条件関数の必要性が排除されます。
以上がJavaScript で Promise を反復処理するときに同期ロギングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。