Promise.all()使用实例
2024-09-08 04:46:34
一、什么是Promise.all()?
在说这个之前要先说清楚promise。promise就是一个对象,专门用来处理异步操作的。
而Promise.all
方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
二、Promise.all()有什么用?
现在有一个需求,要你用node写个上传多张壁纸的接口,这时候就可以用Promise.all()了。
因为你需要发起多个传到数据库的请求,如果有一个没有传成功,都算失败。
三、怎么使用?
这里只说我在工作中用的比较多的Promise.all() 具体更多可以参考阮一峰大神的es6入门 http://es6.ruanyifeng.com/#docs/promise#Promise-all
router.post('/addWallpaper', async (req, res, next) => {
let promises = [];
await req.body.wallpaper.forEach(async function (i) {
// 获取传来的数据
let wallpaper = i[0];
// 默认未上线
let status = 0;
let dataArr = {
// 传入后台的数据
wallpaper,
status
};
let checkAndAdd = async function (dataArr) {
// do something
}
// 新增
//do something
// 获取所有判断结果
promises.push(
checkAndAdd(dataArr).catch(err => {
console.error(err);
return null;
})
);
});
let resArr = await Promise.all(promises);
let resS = resArr.filter((res) => {
return res != null && res.code === 0;
});
});
其实写的不好,因为没有添加catch错误处理,promise会吃掉错误,假设前面的promise的代码出错了,程序不会退出脚本,终止运行,后续将继续完善。
最新文章
- 如何利用 Visual Studio 自定义项目或工程模板
- iOS---观察者模式之--->;KVO
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
- C# DES加密解密用法
- 加密–RSA前端与后台的加密&;解密
- mvc的一些知识点
- HDU 1385 Minimum Transport Cost (最短路,并输出路径)
- mysql-test库要命的地方
- HDU 1016 Prime Ring Problem 题解
- http://fonts.googleapis.com/css?打开很慢解决方案
- 每天努力一点之SQL
- spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常
- bootstrap中可用的图标集
- globalToLocal的坐标变换
- 《Machine Learning》系列学习笔记之第三周
- .NET Core UI框架Avalonia
- 第七周LINUX学习笔记
- VimFaultException A specified parameter was not correct configSpec.guestId
- windows 比较文件命令--fc
- Django之form表单组件