如何 "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 的返回值或回调内部的回调,因为它是异步的。
这是我在 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 的返回值或回调内部的回调,因为它是异步的。