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 使用服务卡片开发时,通过网络请求的数据无法加载到卡片中 
1343浏览  • 1回复 待解决
HarmonyOS 服务卡片中如何进行网络请求 
1437浏览  • 1回复 待解决
卡片开发模式,卡片更新时,数据量稍大些,无法更新 
8308浏览  • 1回复 待解决
HarmonyOS 元服务的卡片怎么加载网络图片 
1280浏览  • 1回复 待解决
升级至next版本后,元服务卡片中无法使用request.downloadFile的api 
3059浏览  • 1回复 待解决
HarmonyOS服务卡片保存的数据无法在app里面获取 
1388浏览  • 1回复 待解决
服务卡片功能如何开发 
1148浏览  • 0回复 待解决
如何开发服务卡片?鸿蒙的服务卡片可以在emui上面运行吗? 
4543浏览  • 1回复 待解决
服务卡片怎么显示网络图片 
773浏览  • 0回复 待解决
请求服务器图片资源刷新卡片 
1928浏览  • 1回复 待解决
服务卡片image怎么获取网络图片? 
8546浏览  • 2回复 待解决
#鸿蒙通关秘籍#如何通过message事件刷新鸿蒙OS卡片中的内容 
1169浏览  • 1回复 待解决
如何在元服务更新卡片数据? 
658浏览  • 0回复 待解决
HarmonyOS 如何使用http请求数据,再用LazyForEach加载到页面上 
1044浏览  • 1回复 待解决
服务卡片只能基于JAVA开发吗? 
4786浏览  • 1回复 待解决
元服务的卡片更新机制,如何更新卡片数据? 
781浏览  • 1回复 待解决
服务卡片的更新方式?服务卡片更新不生效 
4857浏览  • 0回复 待解决
有没有ets+js开发服务卡片demo呀, codelab 的例子全是Java+js开发服务卡片的? 
3995浏览  • 1回复 待解决
HarmonyOS如何在卡片服务中使用Want分享数据至应用 
1429浏览  • 1回复 待解决
HarmonyOS 服务卡片问题 
1267浏览  • 1回复 待解决
HarmonyOS 创建服务卡片? 
1769浏览  • 1回复 待解决
HarmonyOS 元服务卡片 
1228浏览  • 1回复 待解决
#鸿蒙通关秘籍#提个问题,服务卡片开发中,动态卡片和静态卡片有什么区别? 
1218浏览  • 1回复 待解决
鸿蒙next应用开发中,服务卡片的数据怎么实现每天定时更新? 
724浏览  • 0回复 待解决
服务卡片是否可以被其它应用或者服务卡片调用? 
7180浏览  • 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定时刷新中。