让你的应用自动化起来

通用场景

在应用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;
    }
  }
}
相关推荐
Bert.Cai19 小时前
Linux head命令详解
linux·运维
Huy-C19 小时前
云计算案例排错(云上4)
linux·运维·云计算
大新软件技术部20 小时前
Linux 服务器下dotnetcore 程序监控
linux·运维·服务器
程序猿编码20 小时前
Linux内核级隐身术:进程与端口隐藏技术剖析
linux·运维·服务器·linux内核·进程
weixin_3077791320 小时前
使用COPY INTO从S3导入CSV文件到Azure Synapse Dedicated SQL Pool表的问题分析与自动化验证方案
sql·自动化·azure
猫仍在20 小时前
Playwright 架构UI 自动化质量保障平台
ui·架构·自动化
乐维_lwops21 小时前
什么是可扩展、可接入的智能运维体?
运维·开放平台·运维智能体
Ares-Wang1 天前
Linux》》systemd 、service、systemctl daemon-reload、systemctl restart docker
linux·运维·docker
安审若无1 天前
运维知识框架
运维·服务器