g***@163.com
g***@163.com
  • 发布:2026-04-09 19:52
  • 更新:2026-04-09 19:55
  • 阅读:24

[已解决]uts, 异步方法返回值

分类:uts
class A {  
    private _ok: boolean = false  

    public test() {  
        uni.getLocation({  
         ...,  
        success: ()=>{  
            在这里,如何将 _ok 设置为 true  
        }  
     })  
}  

}

代码类似这样。需要将 _ok 设置为 true

2026-04-09 19:52 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

在 UTS 中,要在异步回调(如 uni.getLocationsuccess 回调)中访问类的私有属性 _ok,需要使用箭头函数来保持 this 的上下文指向当前类实例。

参考知识库中 uni-forms 异步校验 的示例,箭头函数可以正确捕获外部作用域的 this

class A {  
    private _ok: boolean = false  

    public test() {  
        uni.getLocation({  
            type: 'wgs84',  
            success: (res) => {  
                // 使用箭头函数,this 指向类实例 A  
                this._ok = true  
                console.log('定位成功,_ok 已设置为:', this._ok)  
            },  
            fail: (err) => {  
                console.error('定位失败:', err)  
            }  
        })  
    }  

    public getOkStatus(): boolean {  
        return this._ok  
    }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

关键说明

  • 如果回调使用普通函数 function(res) { ... }this 会指向回调函数本身,无法访问类的私有属性 _ok
  • 使用箭头函数 () => { ... } 可以保留外部类作用域,直接通过 this._ok 访问和修改属性

如果需要在回调外部持续监听 _ok 的变化,建议结合 Promise 或 async/await 封装:

public async test(): Promise<boolean> {  
    return new Promise((resolve) => {  
        uni.getLocation({  
            success: (res) => {  
                this._ok = true  
                resolve(true)  
            },  
            fail: (err) => {  
                resolve(false)  
            }  
        })  
    })  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

内容为 AI 生成,仅供参考

要回复问题请先登录注册