异步动作
同步
是指程序会等待当前操作结束之后,才执行下一条指令。异步
是指程序不需要等待当前操作就可以继续往后执行,当异步动作处理完后,以通知的方式返回程序,如果程序有设置回调函数,则执行该回调函数。异步适用于无法立即得到结果的场景,如网络请求。
下面以一个车牌识别的例子来说明异步动作的用法。
添加车牌识别节点
右键单击画布任意位置,选择方法
,选择AI
,选择车牌识别
添加图片数据源
右键单击画布任意位置,选择数据源
,选择图片
选择需要识别的图片
从网上下载一些车牌图片,点击选择图片
,然后找到下载的图片,并将其作为车牌识别
节点的输入
注意
当前的车牌识别服务要求图片必须包含汽车,不能识别只有车牌的情况
设置异步回调
连接成功
异步回调。当车牌识别服务成功返回时会执行该动作。
注意异步动作的执行顺序,当鸿图运行至车牌识别
节点时,网络请求会发送到后端系统,本地的程序会立即执行车牌识别
节点右上方所指定的节点,对应上面示例中的打印“请求已发送”
节点。
打印“请求已发送”
节点总是先于回调节点执行,除非异步
动作并不是真的异步,而是伪装成异步的同步。
当请求返回时,根据是否成功,会执行异步回调连接的节点。
提示一
如果业务逻辑是需要等异步动作执行完之后才继续执行,可以不用连接右上方的节点,而只连接成功
或者失败
节点。
提示二
异步回调节点左边有一个带圈的 异
,用来提示这是一个异步回调
和其他节点组合使用
上面的例子本身并不是特别有趣,我们完全可以使用 CURL,Postman 等网络请求工具完成同样的任务。鸿图真正强大的地方在于,它既可以像 Postman 一样直观,又具备完整的编程语言能力,所以配合其他节点,我们可以快速构建非常复杂的业务。下面用一个真实的业务例子来说明。
某电网公司要求,其新能源充电桩只允许新能源车(即绿牌)驶入停车位。他们为每个停车位安装了一个摄像头和一个地锁,当摄像头识别到即将驶入的车辆为绿牌时,地锁自动降落。鸿图示例:
注意
摄像头数据上报以及地锁降落事件下发将在万物互联
章节展开讨论。其本质就是另外两个语义化节点,目前先用应用启动事件
节点和打印
节点替代。