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
待解决
相关问题
taskPool @Concurrent报红
2659浏览 • 1回复 待解决
openharmony arkui taskpool @concurrent装饰器如何使用
5093浏览 • 4回复 待解决
HarmonyOS 我想问下 return 一个Promise 为什么没用
367浏览 • 1回复 待解决
HarmonyOS TS文件可以使用taskpool,但是没办法用@Concurrent
350浏览 • 1回复 待解决
建议开发使用什么单位
1836浏览 • 1回复 待解决
请问下有没有文字滚动动画组件?
306浏览 • 1回复 待解决
请问下有没有FA卡片开发的demo参考
3446浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,有哪些常见问题?
58浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,系统会有哪些额外的操作?
80浏览 • 1回复 待解决
HarmonyOS 关于Concurrent函数在taskpool多线程中使用时候如何实时传输数据到外部?
112浏览 • 1回复 待解决
#鸿蒙通关秘籍#@Concurrent装饰器在什么场景下使用?
29浏览 • 1回复 待解决
HarmonyOS taskpool执行@Concurrent修饰的方法在访问主线程中的单例变量时,变量是空的
216浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,应用文件恢复时,用户数据的隐私咋保护?
66浏览 • 1回复 待解决
Mac下有什么好的编程字体?
2492浏览 • 1回复 待解决
请问下有没有什么接口可以做到。
2547浏览 • 1回复 待解决
如何使用TaskPool在子线程调用对象成员函数
368浏览 • 0回复 待解决
HarmonyOS 如何在taskPool中的@Concurrent方法中获取应用Context上下文?
158浏览 • 1回复 待解决
HarmonyOS 请问下在执行流水线时 使用什么来做代码的静态检查,类似lint
312浏览 • 1回复 待解决
在TS文件里使用Concurrent注解报红,提示Cannot find name 'Concurrent'
1135浏览 • 1回复 待解决
修改ForEach使用的数据对象,UI不刷新
1701浏览 • 1回复 待解决
HarmonyOS 将枚举转成对象,使用keyof会报错,怎么修改?
403浏览 • 1回复 待解决
HarmonyOS 使用 MapKit 时,地图无法加载
167浏览 • 1回复 待解决
@Sendable装饰器 用于解决无法在taskpool调用对象内的方法。为什么以装饰器的方式解决
2051浏览 • 1回复 待解决
#鸿蒙通关秘籍#我想问下,适配完成后,如何进行自验证?
63浏览 • 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