Skip to main content

卡片控制

控制卡片刷新节奏、判断当前环境的几个全局函数。

setUpdateFreq

setUpdateFreq(30)    // 建议系统 30 分钟后再唤起刷新
参数类型说明
minnumber分钟数,整数,非数字 / 0 等价于「不调用」

主机侧 JS 跑完读 __nextUpdate,有 freq 就转成对应的 formProvider.setFormNextRefreshTime 调度。

真的只是「建议」

鸿蒙 FormExtension 也是系统调度,你写 setUpdateFreq(1) 也不会真 1 分钟刷一次;系统会按热度、电量、网络等因素决定。MIN 是「不要早于这个时间」的下界。

setUpdateTime

setUpdateTime(Date.now() + 60 * 60 * 1000)    // 1 小时后再刷
参数类型说明
tsnumber绝对时间戳(ms 单位),非数字 / 0 等价于「不调用」

setUpdateFreq 互斥,最后调用的那个生效。建议用绝对时间的场景:倒计时类卡片(算到「下次整点」),用 setUpdateTimesetUpdateFreq 准。

isDebug

if (isDebug()) {
console.log("调试态:JS 在编辑器里运行")
} else {
// 卡片刷新路径
}
返回说明
boolean编辑器预览运行 → true;FormExtension 刷新 / 真机卡片 → false

用来:调试时多打点日志,真机里跳过重试 / 跳过昂贵分支。

sleep

await sleep(500)    // 等 500ms
参数类型说明
msnumber毫秒,非数字按 0 处理

主要用来给两次接口请求拉开间隔。别在卡片侧滥用 —— 卡片侧 4.5s 上限,sleep 500ms 等于丢半秒预算。

速查

// 调度
setUpdateFreq(min) // min 分钟后再唤起;0/非数 = 不调用
setUpdateTime(ts) // 绝对时间戳 ms;0/非数 = 不调用
// 两者互斥,最后调用的生效

// 环境判断
isDebug() → boolean // 编辑器 = true,卡片 = false

// 流控
await sleep(ms)Promise<ms>