NodeJs - 一起编写异步和非异步函数

NodeJs - Writing async and non-async functions together

这是我的模块,其中 x 返回为 undefined

const si = require('systeminformation');

async function systemData() {
  try {
    let data = await si.system()
    return {
      manufacturer: data.manufacturer,
      model: data.model
    }
  } catch (err) {
    console.log(`${err}`)
  }
}

function checkSystemData() {
  (async () => {
    let sd = await systemData()
    if (sd.manufacturer === 'X') { // Many more such checks

    } else {
      return { check: false, manufacturer: sd.manufacturer }
    }
  })()
}

let x = checkSystemData()
console.log(x)

checkSystemData() 不能由其作者制作async,因为它是更大模块的一部分。我如何重构它以将 x 接收为 { check: false, manufacturer: sd.manufacturer }

您需要 return 来自 checkSystemData() 的内容

return (async () => { // add return
  let sd = await systemData()
  if (sd.manufacturer === 'X') { // Many more such checks

  } else {
    return { check: false, manufacturer: sd.manufacturer }
  }
})()

那么你可以使用

checkSystemData().then(response => {
  console.log(response)
})

let x = await checkSystemData()