让你的应用自动化起来

通用场景

在应用A中点击按钮,调起了应用B,应用B在启动后自动执行了一些动作(比如打开某个页面),像这种类似自动化的操作是怎么实现的呢?

真实场景

应用A中有一个投注签到功能,用户需要在其他应用中跳转到应用A中来自动签到。

一些思考

  • 他们的关系应该是"一对一"的,也就是用户在其他应用中每点一次按钮,都会跳转到应用A中执行相应的逻辑。
  • 并不是一跳转过来就无脑执行,而是在相应的时机执行,比如是进入页面后,数据加载完成后执行它相应的动作。

实现思路

1、先收集从其他应用调过来的意图

javascript 复制代码
export default class ActionQueue {
  static queue = [];

  static add(data) {
    const _data = Array.isArray(data) ? data : [data];

    ActionQueue.queue.push(..._data);
  }
}
javascript 复制代码
    ActionQueue.add({
      _actionType: 1001,
    });

2、在指定时机取出该意图进行相应的执行

javascript 复制代码
  static getActionData(_actionType) {
    const index = ActionQueue.queue.findIndex(
      v => v._actionType === _actionType,
    );

    if (index !== -1) {
      const action = ActionQueue.queue[index];
      ActionQueue.queue.splice(index, 1);

      return action;
    }
  }

在相应的时机执行该意图

javascript 复制代码
async function getData(){
	  const res = await fetchData()
	  ...
	  //执行
      const actionData = ActionQueue.getActionData(
        ActionType: 1001,
      );
      
       if (actionData) {
       	...//做相应的动作
      }
}
  • 完整类
javascript 复制代码
export default class ActionQueue {
  static queue = [];

  static add(data) {
    const _data = Array.isArray(data) ? data : [data];

    ActionQueue.queue.push(..._data);
  }

  static clear(_actionType) {
    if (!_actionType) {
      ActionQueue.queue = [];
      return;
    }

    ActionQueue.queue = ActionQueue.queue.filter(
      v => v._actionType !== _actionType,
    );
  }

  static getActionData(_actionType) {
    const index = ActionQueue.queue.findIndex(
      v => v._actionType === _actionType,
    );

    if (index !== -1) {
      const action = ActionQueue.queue[index];
      ActionQueue.queue.splice(index, 1);

      return action;
    }
  }
}
相关推荐
北京耐用通信3 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
在角落发呆4 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
裴东青5 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
哎呦,帅小伙哦5 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn5 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫6 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
迁移科技6 小时前
告别人工分拣!迁移科技 AI+3D 视觉让机器人 “看懂” 无序抓取
人工智能·科技·3d·机器人·自动化·视觉检测
CodeMartain6 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x6 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复
YuanDaima20486 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能