ArkUI eTS 云函数计算十二生肖[Serverless] 原创 精华
目录
eTS+PA+Serverless调试视频
展示eTS+PA+Serverless调试过程视频
1. 前言
通过前面两篇帖子ArkUI eTS 计算十二生肖和ArkUI eTS PA计算十二生肖[Service Ability]都是简单同步计算出结果返回,今天我们来个异步计算结果返回,这里用到了Serverless云函数来计算十二生肖,值得注意的是,云函数是异步的,不能马上返回结果,所以通过了订阅事件来获取计算出结果,有时候简单的事情复杂化,可以让我们学到更多的知识,让eTS + PA + Serverless 动起来吧!!!
2. 开通云函数
2.1. 启用云函数服务
首次使用云函数服务前,需要先启用此服务。如果您已经启用,可跳过本步骤。
- 登录AppGallery Connect,点击“我的项目”。
- 在项目列表中点击需要开通云函数的项目。
- 在左侧导航栏选择“构建 > 云函数”,进入云函数页面,在右上角点击“立即开通”。
- 如果您已启用多个数据处理位置,当您需要在不同的数据处理位置管理云函数时,可在云函数页面选择“数据处理位置”下拉选项进行切换。
2.2. 创建云函数
启用云函数服务后,您首先需要在AGC中创建函数,并添加函数执行的代码。
- 在“函数”页面,点击“创建函数”。
- 在创建界面中,完成函数定义。
- “函数名称”和“描述”栏输入函数名称与描述。
- “代码输入类型”选择“在线编辑”或“*.zip文件”,选择“在线编辑”可以直接在“代码文件”区域的handler.js文件中编辑函数的代码,AGC提供了默认的myHandler函数代码供您编辑时参考。
- 函数创建完成后,复制以下代码, 点击“保存”。
2.3. 创建触发器
函数创建完成后,需要为函数添加触发器,才可调用到云函数。
- 在函数列表页面点击已创建的函数名称,进入函数概览页面。
- 选择“触发器”页签,点击“添加触发器”进行触发器的添加与配置。
- 添加触发器完成后,可点击创建的触发器查看具体参数。有关触发器的更详细内容,请参见触发器。
2.4. 测试函数
函数创建后,您可以在AGC中测试函数的代码运行是否正常。
- 在函数列表页面点击已创建的函数名称,进入函数概览页面。
- 选择“代码”页签,使用默认测试事件,或者点击“配置测试参数”配置事件和事件参数,配置完成后点击“测试函数”进行测试。
- 完成测试后,可在函数测试页面查看测试结果。
有关函数测试的更详细步骤,请参见测试函数。
3. 调用云函数
函数创建并测试成功,且创建好触发器后,您即可在您的应用程序中通过调用触发器来调起函数, 调用触发器有两种方法。
- 应用客户端调用:在应用的客户端程序中使用云函数SDK的API调用。
- 应用服务端调用:在应用的服务端程序中使用云函数SDK的API调用。
3.1. 查询触发器标识
当您在创建的函数或函数别名中创建了一个HTTP类型的触发器后,在应用客户端调用函数时需要传入HTTP触发器的标识,查询方法如下:
在函数的触发器页面点击“HTTPTrigger”触发器,查看“触发URL”的后缀,获取触发器的标识,格式为“函数名-版本号”。如下图所示,“myhandlerxxxx-$latest”即为HTTP触发器标识。
3.2. 集成云函数SDK
如果需要在应用客户端中调用云函数,则必须集成云函数的客户端SDK。
- 参考HarmonyOS使用入门创建应用并集成AGC SDK。
- 集成云函数SDK。
- HUAWEI DevEco Studio开发环境
添加AGConnect Function依赖到应用级gradle文件中(通常在entry/build.gradle)。
3.3. 调用函数
应用集成了云函数SDK后,可以在应用内直接通过SDK API调用AGC中的云函数,云函数SDK与AGC的函数调用基于HTTPS的安全访问。
- 在调用函数前,需要调用AGConnectFunction.getInstance初始化AGConnectFunction实例。
- 调用AGConnectFunction.wrap设置函数,在方法中传入触发器标识。
- 根据函数入参情况,调用相关方法来调用函数。
- 如果函数没有入参,可以调用FunctionCallable.call()来调用函数。
- 如果函数有入参,可以调用FunctionCallable.call(T object)来调用函数,多个入参添加到object对象中。
- 如果您需要关注函数的返回值,可以在接口返回的Task中设置一个addOnCompleteListener回调监听,在回调方法中获取包含函数执行结果的FunctionResult对象,调用FunctionResult.getValue可以获取函数执行后的返回值或返回对象。
4. Service Ability集成云函数代码片段。
5. Service Ability 订阅与取消订阅代码片段。
6. eTS端调用PA传参,并订阅事件,退出时取消订阅
- 传年份参数到Service Ability,并成功后订阅事件.
- 订阅事件代码片段。
- 取消订阅代码片段。
- 退出取消订阅
7. 总结
由于PA调用云函数是异步的,传参数给云函数后,不能马上返回结果,然后再返回给eTS端,这里用到了订阅事件,也就是说,像上次在Service Ability计算生肖,eTS调用完后,就会返回结果,但改为在Service Ability里调用云函数,不能马上返回结果,通过订阅事件方式来获取异步返回的结果。 项目源码在gitee上已申请开源,还在审核中,审核通过回复开源地址。
佩服大佬不断探索的精神
#ArkUI eTS# 收藏。
项目源码地址:https://gitee.com/army16/zodiac-ets
已Star,感谢分享。
好文一篇