Skip to content

异步动作

同步是指程序会等待当前操作结束之后,才执行下一条指令。异步是指程序不需要等待当前操作就可以继续往后执行,当异步动作处理完后,以通知的方式返回程序,如果程序有设置回调函数,则执行该回调函数。异步适用于无法立即得到结果的场景,如网络请求。

下面以一个车牌识别的例子来说明异步动作的用法。

添加车牌识别节点

右键单击画布任意位置,选择方法,选择AI,选择车牌识别

添加图片数据源

右键单击画布任意位置,选择数据源,选择图片

选择需要识别的图片

从网上下载一些车牌图片,点击选择图片,然后找到下载的图片,并将其作为车牌识别节点的输入

注意

当前的车牌识别服务要求图片必须包含汽车,不能识别只有车牌的情况

设置异步回调

连接成功异步回调。当车牌识别服务成功返回时会执行该动作。

注意异步动作的执行顺序,当鸿图运行至车牌识别节点时,网络请求会发送到后端系统,本地的程序会立即执行车牌识别节点右上方所指定的节点,对应上面示例中的打印“请求已发送”节点。

打印“请求已发送”节点总是先于回调节点执行,除非异步动作并不是真的异步,而是伪装成异步的同步。

当请求返回时,根据是否成功,会执行异步回调连接的节点。

提示一

如果业务逻辑是需要等异步动作执行完之后才继续执行,可以不用连接右上方的节点,而只连接成功或者失败节点。

提示二

异步回调节点左边有一个带圈的 ,用来提示这是一个异步回调

和其他节点组合使用

上面的例子本身并不是特别有趣,我们完全可以使用 CURL,Postman 等网络请求工具完成同样的任务。鸿图真正强大的地方在于,它既可以像 Postman 一样直观,又具备完整的编程语言能力,所以配合其他节点,我们可以快速构建非常复杂的业务。下面用一个真实的业务例子来说明。

某电网公司要求,其新能源充电桩只允许新能源车(即绿牌)驶入停车位。他们为每个停车位安装了一个摄像头和一个地锁,当摄像头识别到即将驶入的车辆为绿牌时,地锁自动降落。鸿图示例:

注意

摄像头数据上报以及地锁降落事件下发将在万物互联章节展开讨论。其本质就是另外两个语义化节点,目前先用应用启动事件节点和打印节点替代。