HarmonyOS鸿蒙Next中回调函数必须写成箭头形式吗?

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS鸿蒙Next中回调函数必须写成箭头形式吗?

@Entry
@Component
struct Index {
...

//回调函数定义, 如果改为 sppConnSucceed(code: BusinessError, number: number){   编译能通过, 但运行时出错
//是不是 普通的函数定义, 被视为 了 类的方法?   而简头定义, 被视为一个 函数形变量??
sppConnSucceed=(code: BusinessError, number: number) => {   
...

}

.build() {
  Column(){
    ...
}
  
socket.sppConnect(this.theMac, sppOption, this.sppConnSucceed);  //spConnSucceed 就是回调函数 

...
}
}

更多关于HarmonyOS鸿蒙Next中回调函数必须写成箭头形式吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
您好,您代码运行时之所以报错,应该是您sppConnSucceed中使用了this关键字所以导致报错。

这个问题,您百度搜索“js中箭头函数中this作用域”会讲的比较清楚。

您代码定义sppConnSucceed时有两种形式

1sppConnSucceed(){this.**}

2sppConnSucceed = ()=>{this.**}

第一中形式,this的作用域是谁调用sppConnSucceed就指向谁,所以sppConnect调用,this指向的sppConnect

第二种箭头函数形式,this作用域实在你sppConnSucceed函数在Index.ets定义时,就被绑定了,所以绑定的时Indexthis

所以你使用箭头函数,调用index中的字段,this.**不会报错,换成方式一会报错,就是因为this作用域不一样。

更多关于HarmonyOS鸿蒙Next中回调函数必须写成箭头形式吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


认真看一下方法的定义

说实话我大概知道你的问题,但你写的太乱了,我只能告诉你正确的姿势

function test(){}

socket.on('xxx',test)

在HarmonyOS鸿蒙Next中,回调函数并不必须写成箭头形式。你可以使用传统的函数声明或函数表达式来定义回调函数。箭头函数的主要特点是它没有自己的this,它会继承外层函数的this值。如果你需要在回调函数中使用外层的this,箭头函数可能是一个方便的选择。但如果你不需要这种特性,传统的函数声明或表达式也是完全可用的。

在HarmonyOS鸿蒙Next中,回调函数并不必须写成箭头形式。你可以使用传统的函数声明或函数表达式,也可以使用箭头函数。箭头函数的主要优势在于它自动绑定this,避免了传统函数中this指向可能带来的问题。因此,选择哪种形式取决于你的具体需求和代码风格。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!