HarmonyOS 鸿蒙Next emitter 通信,内部不能使用this
HarmonyOS 鸿蒙Next emitter 通信,内部不能使用this
使用emitter针对1000000001 进行了两次注册,然后可以通过’触发111 按钮去触发,在回调事件中需要使用到this相关的代码,最后想要的效果是:点击取消触发,可以取消指定的注册事件,保留另一个注册事件,但是我测试发现,针对单个事件的取消不行
handleTest() {
console.log(callback1)
// 使用到this相关的代码
console.log(${this.isExecuteBleCmd})
}
aboutToAppear() {
emitter.on("1000000001", () => {
console.info(callback:${dayjs().unix()});
});
emitter.on("1000000001", this.handleTest.bind(this));
}
Row() {
Text('触发111').onClick(() => {
let eventData: emitter.EventData = {
data: {
"content": "content",
"id": 1,
}
};
emitter.emit("1000000001", eventData);
})
Text('取消触发').onClick(() => {
emitter.off("1000000001", this.handleTest);
})
}
更多关于HarmonyOS 鸿蒙Next emitter 通信,内部不能使用this的实战教程也可以访问 https://www.itying.com/category-93-b0.html
callback取消后的回调,返回EventData信息
更多关于HarmonyOS 鸿蒙Next emitter 通信,内部不能使用this的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,针对Next emitter通信模块,如果在内部遇到不能使用this
关键字的情况,通常是因为在特定的上下文或作用域中,this
的指向不符合预期。在鸿蒙系统开发中,尤其是在处理事件发射器(emitter)时,this
的指向问题往往与闭包、回调函数或异步执行环境相关。
为了解决这个问题,你可以尝试以下方法:
-
使用箭头函数:在JavaScript或TypeScript环境中,箭头函数不绑定自己的
this
,它会捕获其所在上下文的this
值。这可以确保this
在回调函数中正确指向。 -
在外部定义变量:在事件发射器外部定义一个变量(如
self
或that
),并将this
的值赋给它。在回调函数中,使用这个变量来访问原来的上下文。 -
使用Function.prototype.bind:在将函数作为回调传递之前,使用
bind
方法显式设置this
的值。
示例代码(假设在JavaScript环境中):
let self = this;
nextEmitter.on('event', function() {
// 使用self代替this
console.log(self);
});
// 或者使用箭头函数
nextEmitter.on('event', () => {
// this正确指向
console.log(this);
});
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html