HarmonyOS taskpool+@Concurrent 时,全局单利对象无法使用,想问下有什么修改建议?
taskpool.execute(test).then(() => {
// 调度结果处理
let obj = MyStroage.getInstance().getObj()
console.error("222 test ==== test(): " + obj)
})
@Concurrent
async function test(aaa: AAA): Promise<void> {
let obj = MyStroage.getInstance().getObj()
console.error("222 test ==== test(): 我是test函数() " + obj)
}
export class MyStroage {
static my: MyStroage = new MyStroage()
public static getInstance(): MyStroage {
return MyStroage.my;
}
private mObj?:object
public save(obj: object) {
this.mObj = obj;
}
public getObj():object | undefined{
console.error("000 test ==== "+this.mObj)
return this.mObj
}
}
在test()函数中,无法拿到外部的单例对象,想问一下应该如何处理,方便在test()函数中获取到全局的单例对象。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 在@Concurrent里面无法使用任何对象
424浏览 • 1回复 待解决
taskPool @Concurrent报红
3401浏览 • 1回复 待解决
openharmony arkui taskpool @concurrent装饰器如何使用
6179浏览 • 4回复 待解决
HarmonyOS 无法在taskpool中使用AppStorage获取全局变量
743浏览 • 1回复 待解决
HarmonyOS 我想问下 return 一个Promise 为什么没用
997浏览 • 1回复 待解决
HarmonyOS 批量插入的操作使用 taskpool 变成 Concurrent 可以嘛
652浏览 • 1回复 待解决
建议开发使用什么单位
2425浏览 • 1回复 待解决
HarmonyOS endable对象属性napi无法修改
596浏览 • 1回复 待解决
请问下有没有文字滚动动画组件?
1018浏览 • 1回复 待解决
请问下有没有FA卡片开发的demo参考
4087浏览 • 1回复 待解决
HarmonyOS TS文件可以使用taskpool,但是没办法用@Concurrent
770浏览 • 1回复 待解决
HarmonyOS 使用taskpool过程中,对于@Concurrent修饰的方法初始化失败
599浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,有哪些常见问题?
665浏览 • 1回复 待解决
HarmonyOS taskpool Sendable对象
523浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,系统会有哪些额外的操作?
682浏览 • 1回复 待解决
HarmonyOS TaskPool不能访问全局常量和全局函数吗
245浏览 • 1回复 待解决
HarmonyOS @Concurrent修饰的方法中引入对象报错
692浏览 • 1回复 待解决
HarmonyOS Grid实现滑动时无法修改 layoutDirection 属性
623浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,用户数据的隐私咋保护?
685浏览 • 1回复 待解决
HarmonyOS 想问下HarmonyOS的正式版本,API版本是11还是12
802浏览 • 1回复 待解决
HarmonyOS TS语言TaskPool无法通过Sendable装饰的对象传递引用
358浏览 • 1回复 待解决
#鸿蒙通关秘籍# 使用MPCharts时内存上涨问题如何解决?有什么性能优化建议?
773浏览 • 0回复 待解决
请问下有没有什么接口可以做到。
2946浏览 • 1回复 待解决
#鸿蒙通关秘籍#@Concurrent装饰器在什么场景下使用?
653浏览 • 1回复 待解决
目前的话@Concurrent函数中暂不支持从外部拿对象进行操作。因为线程模型中,TaskPool所在的线程与主线程并不共享一个ArkTS引擎实例(详细线程模型文档可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/thread-model-stage-V5
所以在执行MyStroage.getInstance()时,主线程和TaskPool线程不会拿到同一个MyStroage对象。
从TaskPool的应用场景来看,也不推荐在TaskPool中使用和操作全局对象。目前说的是通过单例调用模块功能,这个是支持的。
参考代码:
如果没有在主线程与TaskPool线程对同一单例进行修改或需要TaskPool读取主线程单例信息的需求,上述方案不会有问题。如果有,则可以通过@Sendable装饰器实现跨进程传递对象,此传递为引用传递。@Sendable详细文档教程可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-sendable-V5