Promise.all()使用实例

一、什么是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的代码出错了,程序不会退出脚本,终止运行,后续将继续完善。

 

posted @ 2019-05-05 17:17  Sofiaღ  阅读(548)  评论(0编辑  收藏  举报