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()
这是我的模块,其中 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()