首页  >  文章  >  web前端  >  如何保证 Promise 操作同步循环执行?

如何保证 Promise 操作同步循环执行?

Linda Hamilton
Linda Hamilton原创
2024-11-03 00:13:291005浏览

How to Ensure Synchronous Loop Execution with Promise Operations?

用 Promise 协调循环

问题陈述

我们如何确保循环同步迭代,执行每个迭代的Promise 及其后续日志操作 (logger.log(res)) 的顺序是否正确?

解决方案

避免 PromiseWhile

虽然 PromiseWhile 函数可以方便用 Promise 进行循环,但它不能保证链式操作的执行顺序。

使用 Reduce 进行序列化

维持期望的结果为了排序,我们可以利用 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>

示例用法

<code class="javascript">// Compose an array of email addresses
var arrayOfEmailAddys = [...];

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

好处

这种方法消除了PromiseWhile 方法中需要额外的变量和条件函数。此外,它还简化了代码并确保 Promise 执行的正确顺序。

以上是如何保证 Promise 操作同步循环执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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