我正在尝试运行一个for循环,它将一堆异步请求排队。完成所有请求后,无论他们是resolve
还是reject
,我都希望运行一些代码。我试图利用async / await模式,因为它看起来更好。 :)
这就是我在做的事情:
var promises = []
for ( item in list ) {
prom = AsyncFunction( item )
promises.push(prom)
}
await Promise.all(promises)
doMoreAfter()
然而,一些承诺失败了,发生的第二个承诺Promise.all()
也失败了。
我想简单地忽略任何失败的承诺,并在所有承诺完成后运行下一个代码。
我找到了像this这样的解决方案。
Promise.all([a(), b(), c()].map(p => p.catch(e => e)))
.then(results => console.log(results)) // 1,Error: 2,3
.catch(e => console.log(e));
但是当尝试将其转换为async / await格式时,它看起来不像。
await Promise.all(promises.map(p => p.catch(e => e)))
我错过了什么?
答案 0 :(得分:0)
我尝试像这样运行你的例子: https://jsfiddle.net/804ogadu/3/
load
我确实得到了所需的结果
window.addEventListener('load', function() {
// This code runs after all resources including images are loaded.
}, false);