首页 > 其他分享 >angular中轮训查任务

angular中轮训查任务

时间:2023-05-23 09:35:40浏览次数:40  
标签:application 轮训 no analysis sample item 任务 test angular

  // 查状态
  checkStatus(test_plan_info): void {
    const selectData = test_plan_info;
    // 过滤出和this.modelData中和test_plan_info中test_application_sample_no相等的数据
    const modelDataCopy = this.modelData.filter((v) => {
      return selectData.some((item) => item.test_application_sample_no === v.test_application_sample_no && v.file_info.length > 0);
    });
    console.log(modelDataCopy,'modelDataCopy');
    interval(10000)
      .pipe(
        takeUntil(this.stopPolling$),
        mergeMap(() => modelDataCopy),
        mergeMap(async (item) =>
          this.callApi({
            inspection_no: item.inspection_no,
            analysis_model_no: item.analysis_model_no,
            test_application_sample_no: item.test_application_sample_no,
          })
        )
      )
      .subscribe((result) => {
        // 0:未开始 1:进行中 2:成功 3:失败 const status =  result.callApiRes.model_list[0].analysis_state
        //  selectData 如果有成功的,则对应改变selectData的状态,和删除this.modelData中的数据
        const analysis_status = result.callApiRes.model_list[0].analysis_state;
        const analysis_msg = result.callApiRes.model_list[0].analysis_msg;
        for (const item of selectData) {
          if (
            item.test_application_sample_no === result.test_application_sample_no &&
            analysis_status === '2'
          ) {
            item['pass'] = true;
            item['analysis_msg'] = analysis_msg;
          }
          if (
            item.test_application_sample_no === result.test_application_sample_no &&
            analysis_status === '3'
          ) {
            const hasPass = 'pass' in item;
            if (!hasPass) {
              item['pass'] = false;
              item['analysis_msg'] = analysis_msg;
            }
          }
        }
        // 判断selectData的每一个数据是否都包含pass属性,如果都包含,则停止轮询
        const isAllPass = selectData.every((item) => 'pass' in item);
        if (isAllPass) {
          this.stopPolling$.next();
          this.submitDataContain(selectData);
        }
      });
    // 在15分钟后停止轮询
    setTimeout(() => {
      this.stopPolling$.next();
      this.submitDataContain(selectData);
    }, 15 * 60 * 1000);
  }

  async callApi(value) {
    return await this.testTaskImplementService
      .getEchartsInfo({
        model_list: [
          {
            inspection_no: value.inspection_no ? value.inspection_no : this.inspection_no,
            analysis_model_no: value.analysis_model_no,
          },
        ],
      })
      .then((res) => {
        return {
          test_application_sample_no: value.test_application_sample_no,
          callApiRes: res,
        };
      });
  }

 

标签:application,轮训,no,analysis,sample,item,任务,test,angular
From: https://www.cnblogs.com/cai-xin/p/17422330.html

相关文章

  • angular中使用full-calendar
    版本信息"@fullcalendar/angular":"^5.11.0","@fullcalendar/common":"^5.11.0","@fullcalendar/core":"^5.11.0","@fullcalendar/daygrid":"^5.11.0","@ful......
  • springboot添加@Scheduled定时任务多线程执行
    packagecom.example.demo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.autoc......
  • DolohinScheduler 分布式任务调度框架 代码流程分解
    一、DS-API模块-执行工作流 -定时任务执行 更新schedule参数 -/schedule新增schedule参数做了什么事? 将schedule参数用ScheduleParam类进行解析 有效性校验,而后解析保存到t_ds_schedules表内,更新t_ds_process_definition表 -/onlin......
  • ASP.NET Core 用 Hangfire 实现定时任务周期任务
    前言系统经常会有一些逻辑或任务,需要定时执行或周期性执行,为了实现这个需求,一般有以下几种方式选择:后台任务,即IHostedService开源库:Hangfire开源库:Quartz.net这里,说下Hangfire的使用。官网https://www.hangfire.io/Hangfire–Backgroundjobsandworkersfor.NET......
  • StackOverView又一个Android 5.0 任务管理器控件。这次这个比上次那个(MaterialRecents
    StackOverView视图布局(ViewLayout)★★★★★2015-09-2120:21147kbAndroidStudio1075次165次https://github.com/Bossyao168/StackOverView卡片,任务下载 收藏 Bossyao168 / StackOverViewacustomwidgetofandroid,liketaskmanagerofandr......
  • Angular2 Material Design开发环境搭建
    Angular2和Angular1有什么区别?就是Java和Javascript,雷锋和雷锋塔的区别。刚会用Angular1做些小项目,发现Angular2来了,据说性能上提升还是蛮多,所以还是从0开始吧。Angular2虽然还是支持用es5代码开发,但连官方教程都已经用TypeScript,对于之前没有接触过的人来说,学习还是有些成本的。作......
  • AngularJS2 教程 -- TypeScript环境配置
    AngularJS2TypeScript环境配置这开始前,你需要确保你已经安装了npm,如果你还没安装npm或者不了解npm可以查看我们的教程:NPM使用介绍。由于npm官网镜像国内访问太慢,这里我使用了淘宝的npm镜像,安装方法如下:$npminstall-gcnpm--registry=https://registry.npm.taobao.org......
  • AngularJS2 教程 -- Angular-cli搭建Angular2开发环境
    1.nodejs2.npm包管理以下的东西就当你是知道了这些概念了1.首先,到nodejs官网下载nodejs并安装 2.添加淘宝的npm镜像(由于国内访问国外网站的速度实在是太慢了),由于我们只有要用到的一些东西,我们采用以下的添加镜像方法(windows用户使用cmd,输入以下命令,新手请去看看npm使用教程......
  • 1.脚本高级命令,进程优先级命令,进程管理工具,任务相关命令
    一.总结脚本高级命令trap,install,mktemp,expect,进程优先级命令:nice,renice,进程管理工具:ps,pstree,prtstat,pgrep,pidof,uptime,mpstat,top,htop,free,pmap,vmstat,iostat,iotop,iftop,nload,nethogs,iptraf-ng,dstat,glances,cockpit,kill,job,任务......
  • sqoop导数到hive任务状态一直是Accepted或Running
    昨天晚上装了sqoop准备将数据从pg库导入Hive库备用,写了个sqoop脚本,运行脚本本后从yarnui上看任务状态一直Accepted,卡了三四个小时,最后发现是yarn-site.xml配置问题,给的资源太少,无法运行任务。在yarn-site.xml中添加下面的内容:<property><name>ya......