如何 "wait" 用于从回调函数获取其值的 属性?

How to "wait" for a property that get its value from a callback function?

这是我在 TypeScript 中的代码:

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() 的数据晚了,return 值不包括“cpuSpeed”中想要的值。

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

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;

};

请注意,在这种情况下,您的方法之后还会 returns 一个 this.systemInfo 值类型的 Promise(调用方法需要再次等待)。

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