调用本地云函数
约束与限制
支持Phone、Tablet、Wearable、TV设备。并且从6.1.0(23)版本开始,新增支持PC/2in1设备。
设置“设备端口”到“主机端口”的映射
调用本地云函数之前,请按照以下示例设置“设备端口”到“主机端口”的映射。详情请参见创建反向端口转发任务。
hdc rport tcp:18090 tcp:18090
其中,设备端口和主机端口即为Function URI中的端口。
在应用中调用本地云函数
从6.0.1(21)版本开始,新增支持调用本地云函数功能。
-
在项目中导入cloudFunction组件。
import { cloudFunction } from '@kit.CloudFoundationKit';import { BusinessError } from '@kit.BasicServicesKit';import { hilog } from '@kit.PerformanceAnalysisKit'; -
调用call()方法设置函数,在方法中传入函数名称和本地启动的云函数地址,返回调用结果。
- (可选)通过设置timeout属性对云函数设置超时时长,单位为毫秒。
- (可选)通过设置version属性对云函数设置函数版本号,默认为最新版本'$latest'。
- (可选)如果函数有入参,可以将data参数转化为JSON对象或JSON字符串传入,如果没有参数则不传。
使用Promise异步回调:
function callFunctionLocal() {cloudFunction.call({name: 'my-cloud-function', // my-cloud-function需替换为实际的函数名version: '$latest', // 如果不传入版本号,默认为“$latest”。timeout: 10 * 1000, // 单位为毫秒,默认为70*1000毫秒。data: { // data为函数请求体param1: 'val1',param2: 'val2'},localUrl: 'http://localhost:18090' // 本地启动的云函数地址}).then((value: cloudFunction.FunctionResult) => {hilog.info(0x0000, 'testTag', `Succeeded in calling the function, result: ${JSON.stringify(value.result)}`);}).catch((err: BusinessError) => {hilog.error(0x0000, 'testTag', `Failed to call the function, code: ${err.code}, message: ${err.message}`);})}或者,使用callback异步回调:
function callFunctionLocal() {cloudFunction.call({name: 'my-cloud-function', // my-cloud-function需替换为实际的函数名version: '$latest', // 如果不传入版本号,默认为“$latest”。timeout: 10 * 1000, // 单位为毫秒,默认为70*1000毫秒。data: { // data为函数请求体param1: 'val1',param2: 'val2'},localUrl: 'http://localhost:18090' // 本地启动的云函数地址}, (err: BusinessError, value: cloudFunction.FunctionResult) => {if (err) {hilog.error(0x0000, 'testTag', `Failed to call the function, code: ${err.code}, message: ${err.message}`);return;}hilog.info(0x0000, 'testTag', `Succeeded in calling the function, result: ${JSON.stringify(value.result)}`);})}