常见场景涉及循环一系列 Promise 调用(例如 API 请求),以确保维持执行顺序。 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中文网其他相关文章!