javascript - 给定字符串数组,迭代每个字符串并调用基于 Promise 的函数,但要等到上一个迭代完成后再继续吗?

标签 javascript

我有一个字符串数组...

var urls = ["http:/www.google.com", "http:/www.giantbomb.com", "http:/www.stackoverflow.com"]

我需要为每个函数调用一个基于 Promise 的函数......但是我想等待前一个函数完成后再调用下一个函数。

_.forEach(urls, function(url){ 
    promiseFunc(url); //BUT IT SHOULD WAIT TO CONTINUE FOR LOOP
});

有什么好的方法可以实现这一点吗?

我也在使用 AngularJS。

最佳答案

在现代环境中,使用async函数和循环:

// In an `async` function
try {
    for (const entry of urls) {
        await promiseFunc(url);
    }
    // All done
} catch (error) {
    // Handle/report error
}

如果您不想使用async函数,请使用“promise reduce”技巧:

urls.reduce(
    (p, url) => p.then(() => promiseFunc(url)),
    Promise.resolve()
)
.then(() => {
    // All done
})
.catch(error => {
    // Handle/report error
});

关于javascript - 给定字符串数组,迭代每个字符串并调用基于 Promise 的函数,但要等到上一个迭代完成后再继续吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57097488/

相关文章:

javascript - 为什么不能将属性添加到空值?

javascript - jQuery 默默无闻

javascript - 如何从 struts 2 中的 java 脚本重定向到 struts 操作?

javascript - Bootstrap 多选 onfocus 不起作用

javascript - jQuery 自动完成不适用于键值对数组

javascript - 奇怪的行为(ajax长轮询 channel ) "refuses"来自普通浏览器的连接?

javascript - Internet Explorer v10 之前的版本转到错误处理程序

javascript - 使用 Javascript 检测 URL 并应用 CSS

javascript - 如何从 json 文件分配桑基图 (D3) 中节点的 x 轴位置

JavaScript 分割字符串