首页 >web前端 >js教程 >如何在保持顺序的同时实现 Promise 循环的同步执行?

如何在保持顺序的同时实现 Promise 循环的同步执行?

Patricia Arquette
Patricia Arquette原创
2024-10-29 14:01:02680浏览

How to Achieve Synchronous Execution of Promise Loops while Preserving Order?

实现 Promise 循环的同步执行

如何确保循环迭代期间 Promise 调用及其链式日志记录操作的同步性?使用 PromiseWhile() 的初始方法似乎很有前途,但引发了对保留正确执行顺序的担忧。

相反,请考虑利用 Promise 的固有功能来完成此任务。通过将问题定义为一系列异步调用来获取用户详细信息并维护原始响应顺序,我们可以利用 Array.prototype.reduce() 构建扁平的 .then() 链。

解决方案:

以下代码举例说明了此方法:

<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>

此函数接受电子邮件地址数组并返回 Promise。 reduce() 函数迭代数组并为每封电子邮件执行 getUser 承诺。结果将同步记录在 did() 回调中。

调用函数:

要调用该函数,请填充电子邮件地址数组 (arrayOfEmailAddys) 并使用如下所示:

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

此代码创建一个线性 Promise 链,确保每个 Promise 都按顺序解析,并且日志记录操作按正确的顺序执行。

以上是如何在保持顺序的同时实现 Promise 循环的同步执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn