zoukankan      html  css  js  c++  java
  • 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的代码出错了,程序不会退出脚本,终止运行,后续将继续完善。
  • 相关阅读:
    数据公钥加密和认证中的私钥公钥
    hibernate数据的三种状态
    寄存器和立即数和内存单元
    三条总线作用
    liunx安装redis和gcc
    Python遍历列表
    String.split()分割字符串方法
    Jmeter教程 录制脚本
    Jemeter压力测试
    Jmeter性能测试
  • 原文地址:https://www.cnblogs.com/caoshufang/p/10814941.html
Copyright © 2011-2022 走看看