让你的应用自动化起来

通用场景

在应用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;
    }
  }
}
相关推荐
钛生智能6 分钟前
OA 流程定制全参数详解(三):环节信息——流程中最核心、参数最多的部分
运维·办公自动化·oa·协同办公·oa办公系统
河北稳控科技6 分钟前
钢筋应力计 应力与温度同步监测
自动化·工程监测·测量仪器·岩土工程
bjxiaxueliang13 分钟前
一文自建STUN:在Ubuntu上分步搭建STUN服务
linux·运维·ubuntu
秦jh_28 分钟前
【Docker】镜像、卷原理
运维·docker·容器
物联网软硬件开发-轨物科技43 分钟前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
竣达技术2 小时前
Modbus 转 SNMP 协议转换器|自定义协议 + SNMP TRAP 主动上报
运维·服务器·网络·数据库·安全
优化Henry2 小时前
LTE小区光路降质告警排查与处理实录
运维·网络·学习·5g·tdd
F&C嘉准传感器2 小时前
国产接近FSCU1808全密封接近开关:CNC油污工况稳定检测,撞机事故减少
人工智能·安全·目标检测·自动化
无足鸟ICT2 小时前
【RHCA+】_etc_yum.conf
linux·运维
李纲明2 小时前
WordPress 古腾堡点「更新」报「不是有效的 JSON 响应」:我按 REST 接口一路查下来的顺序
运维·nginx·php·wordpress·rest api