nodejs async的使用
项目目录结构如下
nodejs async/await的使用
// promise 方式获取一个文件的内容
function getFileContent(fileName) {
const promise = new Promise(( resolve, reject )=> {
const fullFileName = path.resolve(__dirname, 'files', fileName)
fs.readFile(fullFileName, (err, data) =>{
if (err) {
reject(err)
return
}
resolve(JSON.parse(data.toString()))
})
})
return promise
}
// 异步写法
getFileContent('a.json').then(aData =>{
console.log(aData)
return getFileContent(aData.next)
}).then(bData =>{
console.log(bData)
return getFileContent(bData.next)
}).then(cData =>{
console.log(cData)
})
// 同步写法
async function readFileData() {
// 同步写法
try {
const aData = await getFileContent('a.json')
console.log('a aData', aData)
const bData = await getFileContent(aData.next)
console.log('b bData', bData)
const cData = await getFileContent(bData.next)
console.log('c bData', cData)
} catch (err) {
console.error(err)
}
}
readFileData()
要点
async await 要点
1. await 后可以追加 promise 对象,获取 resolve 的值
2. await 必须包裹在 async 函数里面
3. async 函数执行返回的也是一个 promise 对象
4. try-catch 截获 promise 中 reject 的值