我有一个字符串数组...
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/