HarmonyOS 使用服务卡片开发时,通过网络请求的数据无法加载到卡片中
1、开发服务卡片时,已经可以使用静态数据并显示在服务卡片中。
2、在继承了FormExtensionAbility的EntryFormAbility中,分别在onAddForm和onUpdateForm方法中,使用http请求数据来替换静态数据时,由于http请求方法为异步方法,请求未响应的情况onAddForm和onUpdateForm方法都执行结束了。
3、onAddForm和onUpdateForm方法又不允许使用async+await的方式,提示异常。
4、还有什么样的方式可以对http异步请求的数据发送到卡片中。或者是能在EntryFormAbility中解决异步方法的问题?
代码示例:
onFormEvent(formId: string, message: string) {
console.log('onFormEvent');
// Called when a specified message event defined by the form provider is triggered.
let params: param = {
id: '9764',
}
NEW_POST('url', params).then(res => {
console.info('onFormEvent-data', res.code, res.result, res.data.lngId, JSON.stringify(res.data));
const jsonArray = JSON.parse(res.data) as result[];
let obj: Record<string, string|string[]> = {
'test': '测试2',
'titleC': jsonArray.map((item) => item.titleC)
};
let formData = formBindingData.createFormBindingData(obj);
formProvider.updateForm(formId, formData)
console.log('onFormEvent-success');
})
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 使用服务卡片开发时,通过网络请求的数据无法加载到卡片中
31浏览 • 1回复 待解决
HarmonyOS 服务卡片中如何进行网络请求
19浏览 • 1回复 待解决
卡片开发模式,卡片更新时,数据量稍大些,无法更新
7145浏览 • 1回复 待解决
升级至next版本后,元服务卡片中无法使用request.downloadFile的api
1898浏览 • 1回复 待解决
服务卡片功能如何开发
63浏览 • 0回复 待解决
如何开发服务卡片?鸿蒙的服务卡片可以在emui上面运行吗?
3394浏览 • 1回复 待解决
HarmonyOS服务卡片保存的数据无法在app里面获取
368浏览 • 1回复 待解决
服务卡片image怎么获取网络图片?
7017浏览 • 2回复 待解决
请求服务器图片资源刷新卡片
918浏览 • 1回复 待解决
有没有ets+js开发服务卡片demo呀, codelab 的例子全是Java+js开发服务卡片的?
2924浏览 • 1回复 待解决
HarmonyOS如何在卡片服务中使用Want分享数据至应用
399浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何通过message事件刷新鸿蒙OS卡片中的内容
83浏览 • 1回复 待解决
服务卡片是否可以被其它应用或者服务卡片调用?
5963浏览 • 1回复 待解决
服务卡片的更新方式?服务卡片更新不生效
3550浏览 • 0回复 待解决
服务卡片只能基于JAVA开发吗?
3461浏览 • 1回复 待解决
HarmonyOS 创建服务卡片?
169浏览 • 1回复 待解决
HarmonyOS 服务卡片问题
59浏览 • 1回复 待解决
HarmonyOS 元服务卡片
32浏览 • 1回复 待解决
HarmonyOS 服务卡片能否加载har模块里面的组件
19浏览 • 1回复 待解决
服务卡片 默认生成的 WidgetImpl 怎么使用?
6429浏览 • 1回复 待解决
HarmonyOS 服务卡片静态预览图,应用内快速添加服务卡片
55浏览 • 1回复 待解决
服务卡片的span组件,背景颜色设置无法生效
8754浏览 • 1回复 待解决
#鸿蒙通关秘籍#提个问题,服务卡片开发中,动态卡片和静态卡片有什么区别?
125浏览 • 1回复 待解决
HarmonyOS 卡片开发咨询
381浏览 • 1回复 待解决
无法在卡片正常使用TextTimer组件
373浏览 • 1回复 待解决
这里的异步请求并不会导致卡片不刷新,因为你的刷新方法是写在回调里面的。
最有可能是因为:
FormExtensionAbility进程不能常驻后台,即在卡片生命周期回调函数中无法处理长时间的任务,在生命周期调度完成后会继续存在5秒,如5秒内没有新的生命周期回调触发则进程自动退出。
针对可能需要5秒以上才能完成的业务逻辑,建议拉起主应用进行处理,处理完成后使用updateForm通知卡片进行刷新。
针对网络请求刷新卡片,这边建议拉起主应用进行处理。
相关文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-ui-widget-event-call-V5#开发步骤
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-ui-widget-event-uiability-V5#通过call事件刷新卡片内容
首次创建卡片的时的初始化数据,可以通过下面的方式来刷新:
首先:在card.page页面
然后,在formAbility里面
通过更新time,监听到数据变化后,回调EntryAbility,请求网络数据,再更新卡片内容。同样,该方式也可用在,onUpdateForm定时刷新中。