首页 > 其他分享 >一个任务处理工具

一个任务处理工具

时间:2024-11-21 14:43:01浏览次数:1  
标签:node item1 const 处理 Object matchConfigs item2 任务 工具

一个任务处理工具

// import vueCompiler from '@vue/compiler-dom';
//
// import fs from 'fs';
// const str=fs.readFileSync('App.vue').toString();
//
// const rootNode=vueCompiler.parse(str)
// console.log(rootNode)
const _={
    isInclude:function (item1,item2){
        if(Object.prototype.toString.call(item1)==='[object Object]'&&Object.prototype.toString.call(item2)==='[object Object]'){
            let isOk=true
            for(let k in item2){
                if(!this.isInclude(item1[k],item2[k])){
                    isOk=false
                    break
                }
            }
            return isOk
        }else{
            return item1===item2
        }
    }
}

const matchConfigs=[
    {
        async match(node){
            return true
        },
        task:async function (node){
            console.log('fitMatch',node)
        }
    },{
        match:{},
        task:function (node){
            console.log('fitM',node)
        }
    }
]
const rootNode={
    type:1
}
const taskMan={
    //将tree转成数组任务
    init(taskArr,matchConfigs){
        this.matchConfigs=matchConfigs
        this.taskArr=[rootNode]
        for(let i=0;i<taskArr.length;i++){
            this.run(this.taskArr[i])
        }
    },
    async run(node){
        const matchConfigs=this.matchConfigs
        for(let i=0;i<matchConfigs.length;i++){
            const item=matchConfigs[i]
            let isMath=false
            if(Object.prototype.toString.call(item.match)==='[object Object]'){
                if(_.isInclude(node,item.match)){
                    isMath=true
                }
            }else if(Object.prototype.toString.call(item.match)==='[object Function]'){
                isMath=item.match(node)
            }else if(Object.prototype.toString.call(item.match)==='[object AsyncFunction]'){
                isMath=await item.match(node)
            }
            if(isMath){
                await this.fitMatch(node,item)
                break
            }
        }
    },
    async fitMatch(node,item){
        if(Object.prototype.toString.call(item.task)==='[object Function]'){
            item.task(node)
        }else if(Object.prototype.toString.call(item.task)==='[object AsyncFunction]'){
            await item.task(node)
        }


    }
}
taskMan.init([rootNode],matchConfigs)

  

  

标签:node,item1,const,处理,Object,matchConfigs,item2,任务,工具
From: https://www.cnblogs.com/caoke/p/18560712

相关文章

  • 【C#】【winforms】MVP架构中从 Model 或 View 层主动向 Presenter 传递数据或调用处
    背景使用winforms做上位机软件,软件功能简单来说就是与串口通信。因为一个软件要应用于不同型号的下位机,采用MVP架构提高代码复用性。 其中Model层中实例化SerialPort对象:privateSerialPort_serialPort;只关注串口收发。 presenter层负责主要业务逻辑。view层负责......
  • 深入解析 Autotools 自动化工具
    Autotools是一套功能强大的构建系统工具集,用于自动生成软件项目的构建脚本,解决跨平台兼容性问题。它广泛用于开源项目的开发,特别是在Linux和类Unix系统中。本文将详细解析Autotools的概念、工作原理、使用方法及实战案例,并结合逻辑图和表格使其更加通俗易懂。什么......
  • subst 是 Windows 操作系统中的一个命令行工具,它允许用户将一个文件夹或目录映射为虚
    subst|MicrosoftLearnsubst/?将路径与驱动器号关联。SUBST[drive1:[drive2:]path]SUBSTdrive1:/D drive1:    指定要分配路径的虚拟驱动器。 [drive2:]path 指定物理驱动器和要分配给虚拟驱动器的路径。 /D      删除被替换的(虚拟)......
  • icacls 是 Windows 操作系统中用于管理文件和目录的访问控制列表(ACL)命令行工具。它可
    icacls|MicrosoftLearnicacls是Windows操作系统中用于管理文件和目录的访问控制列表(ACL)命令行工具。它可以用来查看、修改、备份和恢复文件和文件夹的权限设置。权限控制是Windows安全体系的重要组成部分,icacls是在命令行下管理这些权限的一种方式。1.什么是 icacls?......
  • NSIS (Nullsoft Scriptable Install System) 是一个开源的、灵活且高度可定制的安装包
     NSIS(NullsoftScriptableInstallSystem)是什么?NSIS(NullsoftScriptableInstallSystem)是一个开源的、灵活且高度可定制的安装包制作工具,用于在Windows操作系统上创建安装程序。它由Nullsoft公司开发,并以其轻量级、可扩展性和脚本驱动的特性而广受欢迎。NSIS允......
  • 高氯酸盐达标新排放标准离子交换树脂处理
    全国,高氯酸盐是一种新型的持久性微量污染物,具有强水溶性,低吸附性和高迁移扩散性,在自然环境中可长期稳定存在几十年或更长时间。如图展示了人类暴露于高氯酸盐污染物的几种常见方式。比较于微弱的土壤和矿物质的吸附作用,高氯酸盐可随大气沉降与水体流动快速进入到河流、湖泊、地......
  • 【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
    关于VLANPWNVLANPWN是一款针对VLAN的安全研究和渗透测试工具,该工具可以帮助广大研究人员通过对VLAN执行渗透测试,来研究和分析目标VLAN的安全状况。该工具专为红队研究人员和安全学习爱好者设计,旨在训练网络工程师提升网络的安全性能,请不要将其用于恶意目的。工具核心脚本D......
  • 你有用过CSS预处理器吗?喜欢用哪个?原理是什么?
    我用过CSS预处理器,主要用过Sass、Less和Stylus。我最常用的是Sass,因为它拥有强大的功能、活跃的社区和丰富的学习资源。以下是我喜欢Sass的一些原因:语法简洁易懂:Sass提供了两种语法:SCSS(SassyCSS)和缩进语法。SCSS与CSS语法非常相似,易于上手;缩进语法则更加简......
  • 6 款国内外效率工具分享:好用的便签/项目管理/视频编辑
    1.AsanaAsana是一款专注于团队协作的项目管理工具,许多大型企业都在使用它来提高团队的工作效率。在Asana中,你可以创建项目,然后将项目分解成多个任务,并为每个任务分配负责人、设置截止日期和优先级。团队成员可以在任务下方进行评论、上传附件,方便大家实时沟通和协作。它通过......
  • 办公必备!4款Win电脑实用的效率工具推荐
    在日常的办公场景中,拥有一些高效实用的工具能够极大地提升我们的工作效率和质量。今天就给大家推荐四款Windows电脑上的宝藏效率工具,让你的办公如虎添翼。1、飞书先进企业协作与管理平台。提供一站式整合即时沟通、音视频会议、飞书文档等办公协作套件,还提供项目与组织管理工......