HarmonyOS getStringByName方法二次封装
为使用方便简单二次封装了一下getStringByName方法,用于向资源库读取stirng.json对应name的value值,但是有点小问题。这是个异步方法,有时(有的场景)页面代码跑的快,数据还没更新过来,导致显示内容是空的,如何二次封装为同步方法?或其它封装、调用技巧?
封装代码:
// StringByName.ets
import { BusinessError } from '@ohos.base';
import { common } from '@kit.AbilityKit';
class StringByName {
context = getContext(this) as common.UIAbilityContext
async stringByName(name: string): Promise<string> {
return new Promise((resolve, reject) => {
this.context.resourceManager.getStringByName(name, (error: BusinessError | null, value: string) => {
if (error) {
reject(error); // 使用reject来拒绝Promise
} else {
resolve(value); //使用resolve来解决Promise
}
});
});
}
}
export default new StringByName();
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
//调用代码:
import StringByName from '../../StringByName';
@State Pull_to_load_more: string = ''
@State Release_to_load: string = ''
@State Happily_loading: string = ''
StringByName.stringByName('Pull_to_load_more').then(str => {
this.Pull_to_load_more = str
})
StringByName.stringByName('Release_to_load').then(str => {
this.Release_to_load = str
})
StringByName.stringByName('Happily_loading').then(str => {
this.Happily_loading = str
})
// refreshConfigurator属性设置
setTimeout(() => {//setTimeout()临时方案,目的是等待数据后再传给目标接口
this.refreshConfigurator.setLoadTextPullUp1(this.Pull_to_load_more) //'正在上拉刷新...'
this.refreshConfigurator.setLoadTextPullUp2(this.Release_to_load) //'放开刷新'
this.refreshConfigurator.setLoadTextLoading(this.Happily_loading) //'正在玩命加载中...'
}, 100)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS aioxs二次封装
993浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何封装axios请求并进行二次封装
1308浏览 • 1回复 待解决
HarmonyOS 自定义弹窗如何二次封装和使用
1576浏览 • 1回复 待解决
HarmonyOS 权限二次申请
841浏览 • 1回复 待解决
class二次刷新渲染数组
1549浏览 • 1回复 待解决
HarmonyOS cocos引擎能否二次启动
1209浏览 • 1回复 待解决
HarmonyOS @ohos.request内部是否是基于http库进行的二次封装
942浏览 • 1回复 待解决
实现二次侧滑退出应用
2779浏览 • 1回复 待解决
HarmonyOS 需要一个网络请求axios二次封装的项目或者demo供参考
958浏览 • 1回复 待解决
HarmonyOS 如何实现二次贝塞尔曲线动画?
1290浏览 • 1回复 待解决
ArkTS想跟native C++交互能否基于原来jni接口的so做二次封装调用?
952浏览 • 1回复 待解决
华为账号实时验证/二次放号相关咨询
2865浏览 • 1回复 待解决
HarmonyOS 路由第二次跳转到webview页面,无法触发webview.once('webInited')方法
1035浏览 • 1回复 待解决
HarmonyOS napi_call_threadsafe_function 调用第二次crash
1366浏览 • 1回复 待解决
HarmonyOS 如何获取相机采集的图像数据进行二次处理?
920浏览 • 1回复 待解决
HarmonyOS 对worker做二次封装,以第三方库发布供业务使用,但封装后的worker无法正常使用。
644浏览 • 1回复 待解决
HarmonyOS 相机使用 ImageReceiver 作为输出是为了预览二次处理吗?
917浏览 • 1回复 待解决
HarmonyOS 拍照、录像二次处理只能在C++侧完成吗
663浏览 • 1回复 待解决
HarmonyOS 如何拦截系统返回,实现返回时提示二次确认弹窗
1390浏览 • 0回复 待解决
HarmonyOS 如何防止app或者hap包等被二次签名打包
894浏览 • 1回复 待解决
如何避免app的二次打包,确保应用的安全性?
1552浏览 • 1回复 待解决
HarmonyOS Connect HiLink SDK二次开发指南在哪里有呀
9578浏览 • 1回复 待解决
Image已加载网络图片,二次加载是否有缓存机制
1315浏览 • 1回复 待解决
JSON初始化后有数据,如何跳过二次初始化?
305浏览 • 1回复 已解决
HarmonyOS Web组件中如何对二次跳转的url添加head头信息
920浏览 • 1回复 待解决
可以使用getStringByNameSync同步获取资源名称,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5#getstringbynamesync9