const fs = require('fs') let read=()=>{
fs.readFile("./contents/test.json",(err,data)=>{
return JSON.parse(data.toString())
})
} (()=>{
let result = read()
console.log(result) //undefind
})()
我们想从一个回调函数返回一个我们想要的值,如果按照上面的写法我们始终只能拿到undefind。
解决的办法也很简单,如下。
const fs = require('fs') let read=async ()=>{
return new Promise((resolve,reject)=>{
fs.readFile("./contents/test.json",(err,data)=>{
if(err) reject(err)
resolve(JSON.parse(data.toString()))
})
}) } (async ()=>{
let result =await read()
console.log(result) //{msg:"ok"}
})()
顺便把异步的问题也解决了。