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, }; }); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix