javascript - 手动销毁未解决的承诺
问题描述
const array = [1, 2, 3]
const wrapper = (e) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if(e === 2) {
reject(e+":rejected")
} else {
console.log(e+":resolved")
resolve()
}
}, e * 1000);
})
}
const main = async() => {
try {
await Promise.all(array.map(e => wrapper(e)))
} catch(e){
console.log(e)
}
}
main()
电流输出:
1:resolved
2:rejected
3:resolved
预期输出:
1:resolved
2:rejected
当一个承诺被拒绝时,如何取消未解决的承诺。在这种情况下,我将取消承诺 3
for(let i = 1;i <= 3;i ++) {
await wrapper(i)
}
这不是一个解决方案,因此我想像多线程一样一次运行函数,而不是一个一个地运行。这就是我使用promise.all的原因
解决方案
推荐阅读
- node.js - 如何修改一个路由匹配中的变量并将修改后的值用作下一个路由的路由配置?
- java - ArcGIS Runtime:如何识别所有要素图层中最顶层的要素?
- azure-ad-b2c - Azure AD B2C - 用户登录时调用函数
- javascript - 不同页面的不同谷歌地图位置
- java - 使用Flink时Kafka中json数据不清楚时如何反序列化
- docker - 无法让谷歌身份验证在 docker 内工作以发布到 pubsub
- php - 如何在php中编码和解码URL参数
- java - SequentialTransition 内 javafx 中的反向转换
- amazon-web-services - AWS Lambda 日志
- pycharm - pycharm 2018 中的相对导入不像 python 3.6 中的相对导入那样工作