让你的应用自动化起来

通用场景

在应用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;
    }
  }
}
相关推荐
代码方舟9 分钟前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化
数智启示录20 分钟前
PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍
运维·数据库·经验分享·postgresql·面试
明达智控技术27 分钟前
告别停机内卷!热插拔远程IO,解锁工控运维新范式
分布式·物联网·自动化
云登指纹浏览器35 分钟前
RPA 与指纹浏览器集成:多账号自动化运营的5项环境配置
运维·自动化·rpa
wtblszn1 小时前
城市内河在线监测系统方案
运维·物联网
Le_ee1 小时前
科来流量分析/结合MCP自动化
运维·自动化
发光的沙子2 小时前
嵌入式系统架构师----Ubuntu如何安装不在列表内的软件?
linux·运维·ubuntu
C+ 安口木2 小时前
Alibaba Cloud Linux 3 服务器环境搭建实战记录
linux·运维·服务器
迪康Defender2 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
迪康Defender3 小时前
迪康端点安全一体化管理系统文档安全:构建企业文档资产全链路防护体系
运维·网络·安全·web安全·终端安全管理