首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何“等待”从回调函数获取值的属性?

如何“等待”从回调函数获取值的属性?
EN

Stack Overflow用户
提问于 2021-11-21 14:54:28
回答 1查看 20关注 0票数 0

下面是我的TypeScript代码:

代码语言:javascript
复制
private getInfoSystem = () => {
    this.systemInfo  = {
        cpuSpeed: 0 ,
        totalRam: os.totalmem(),
        freeRam: os.freemem(),
        sysUpTime: os_utils.sysUptime(),
        loadAvgMinutes: {
            one: os_utils.loadavg(1),
            five: os_utils.loadavg(5),
            fifteen: os_utils.loadavg(15),
            }
    }
    
    si.cpuCurrentSpeed().then ((data)=> {
        this.systemInfo.cpuSpeed = data.avg ;
    });
    return this.systemInfo;
};

属性"cpuSpeed“首先被初始化为零,然后我调用使用回调函数的方法cpuCurrentSpeed(),并尝试将值放入"cpuSpeed”中。问题是cpuCurrentSpeed()的数据延迟,并且返回值在"cpuSpeed“中没有包含所需的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-21 15:09:00

因为您在cpuCurrentSpeed调用上使用了.then,所以我假设它返回一个Promise,而不是使用回调。如果是这样的话,你可以让你的方法异步并等待它:

代码语言:javascript
复制
private getInfoSystem = async () => {
     this.systemInfo  = {
        cpuSpeed: 0 ,
        totalRam: os.totalmem(),
        freeRam: os.freemem(),
        sysUpTime: os_utils.sysUptime(),
        loadAvgMinutes: {
            one: os_utils.loadavg(1),
            five: os_utils.loadavg(5),
            fifteen: os_utils.loadavg(15),
        }
    }
    this.systemInfo.cpuSpeed = (await si.cpuCurrentSpeed()).avg;
    return this.systemInfo;

};

请注意,在这种情况下,您的方法还返回this.systemInfo值类型的承诺(然后调用方法需要再次等待)。

否则,您只能依赖于回调内部的Promises或回调的返回值,因为它是异步的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70055639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档