首页 > 解决方案 > NodeJs - 一起编写异步和非异步函数

问题描述

这是我的模块,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 }

标签: node.jsfunctionpromiseasync-awaitundefined

解决方案


你需要从 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()

推荐阅读