首页 > web前端 > js教程 > 正文

如何确保循环中基于 Promise 的代码同步执行?

Susan Sarandon
发布: 2024-10-26 19:22:30
原创
278 人浏览过

How to Ensure Synchronous Execution of Promise-Based Code in a Loop?

找到正确的循环结构以确保基于 Promise 的代码同步运行

使用基于 Promise 的代码时,正确的循环结构是对于保证异步操作的同步执行至关重要。在给定的场景中,目标是构建一个循环,确保在每次迭代期间以正确的顺序执行“db.getUser(email).then(function(res) { logger.log(res); })”。

一种方法采用自定义的“promiseWhile”函数。虽然此方法对于一般场景很有用,但对于当前的具体情况却带来了不必要的复杂性。相反,一个更直接的解决方案是利用内置的数组操作函数,如map()和reduce()。

并行与串行Promises

问题在于要求保持响应的顺序,这消除了通过 Array.prototype.map() 使用并行方法。要以保留的顺序构建所需的 Promise 链,Array.prototype.reduce() 更合适。

示例:

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());
}
登录后复制

通过使用此方法,执行“db. getUser”调用保证是串行的,从而确保结果的顺序得以维持。代码可以如下调用:

var arrayOfEmailAddys = [...];

fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});
登录后复制

这种方法消除了对复杂循环或条件的需要,并确保 Promise 链的正确执行,即使在处理异步操作时也是如此。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!