vue Promise 对象 等待所有异步处理完成 再继续处理

news/2024/6/18 21:27:38 标签: vue.js, javascript, 前端

1 定义数据集合 用来搜集所有数据

javascript">  let promises = [];  // 用来存储所有的 Promise 对象

2 promise对象 异步 返回数据 同时添加数据到promises 列表

javascript">// 依次读取列表元素的表
for (let symbol of symbolList) {

 let promise = new Promise((resolve, reject) => {  // 将请求数据和处理数据的代码封装成 Promise 对象

    // 异步事务 
      getRequest.onerror = function (event) {
        console.log('读取数据出错');
        reject(event.target.error);
      };

      getRequest.onsuccess = function (event) {
        let data = event.target.result;

        if (data != undefined) {
          that.logList.push(`数据获取成功 : ${key}`)
          let kdataAndmaObj = funcKdataAndMaObj(params.cycle, data)

          let analysisedData = funcMa(kdataAndmaObj, params.cycle, tableName)
          
         //
         // 异步结果返回给promise 对象

          resolve(analysisedData);  // 将处理后的数据传递给 resolve() 函数
        } else {
          console.log(`${key} 数据不存在`);
          that.logList.push(`数据不存在 : ${key}`)
          resolve(null);  // 表示数据不存在
        }
      };
    });
    promises.push(promise);  // 将 Promise 对象加入 promises 列表中
  }

3 Promise.all() 方法等待所有的 Promise 对象都执行完成后,才会执行 .then() 中的回调函数

javascript">Promise.all(promises).then(results => {
    // 在所有 Promise 对象都完成后执行下一步操作
    let DataAll = results.filter(result => result !== null);  // 过滤掉不存在的数据
    console.log('DataAll :', DataAll );

    // 处理剩余的代码...
  }).catch(error => {
    console.log('发生错误:', error);
  });

4 总结

promise对象 异步处理

Promise.all() 等待所有异步完成 在里面处理所有数据


http://www.niftyadmin.cn/n/4973117.html

相关文章

pytestx容器化执行引擎

系统架构 前端、后端、pytest均以Docker容器运行服务,单独的容器化执行引擎,项目环境隔离,即用即取,用完即齐,简单,高效。 前端容器:页面交互,请求后端,展示HTML报告 后…

开源项目的资金来源:捐赠、赞助与商业模式

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

机器学习技术

机器学习技术是什么? 机器学习技术(Machine Learning,ML)是一种人工智能的分支,它关注如何通过数据和模型,让计算机自动从经验中学习,改进性能,并不断提高任务的准确性。机器学习的…

开源在大数据和分析中的角色

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

本地部署 Stable Diffusion(Mac 系统)

在 Mac 系统本地部署 Stable Diffusion 与在 Windows 系统下本地部署的方法本质上是差不多的。 一、安装 Homebrew Homebrew 是一个流行的 macOS (或 Linux)软件包管理器,用于自动下载、编译和安装各种命令行工具和应用程序。有关说明请访问官…

vue2 element 踩坑爬坑

动态增减表单项 这个其实官网有demo,但是自己也调试了好久,记录下,具体写法自己查看文档:https://element.eleme.cn/#/zh-CN/component/form 关键地方在于key,新增数组时,要在数据里增加个key,…

【C++】list类的模拟实现

🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、list类的模拟实现1.1 list的…

序列化协议:JSON和XML

作者:CARROT 链接:https://www.zhihu.com/question/604811576/answer/3100483698 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 json和xml都是数据传输的格式。比如我们开发过程中需要和网…