“我知道,我知道,你不应该这样做。在这种情况下,重构超出了范围,在我所拥有的时间范围内是不实际或不可能的。*
我正在对一些依赖于同步块的现有遗留代码进行更改。
新代码依赖于Promise的解析,但手动跟踪所有调用并将其转换为异步对我来说并不实用。
代码不是性能关键的,并且在应用程序启动时运行一次,是否有某种方法可以让我等待promise同步解析?
像这样愚蠢的事情:
const si = require('systeminformation')
async function getPhysicalCores() {
const cpu = await si.cpu()
return cpu.physicalCores
}
function main() {
let result = undefined
foo().then((cores) => { result = cores })
while (result === undefined) continue
return result
}
main()
一种可能的方法是使用execSync
function getPhysicalCores() {
const result = child_process
.execSync(`node -e "console.log((await require('systeminformation').cpus()).physicalCores)`;
return parseInt(result, 10)
}
1条答案
按热度按时间piah890a1#
有没有办法让我等待promise同步解决?
不。(
while (!done) continue;
busy-loop不会让其他任务运行,所以promise执行器代码永远不会被执行。)应用程序启动时运行一次
然后,假设
function main()
是实际的应用程序入口点,并且不关心它的返回值i。e.你能做的
(or等效的
.then()
版本),因此异步init函数可以执行它的任务,然后继续执行main函数。