const path = require('path')
const fs = require('fs')
// 使用promise解决回调地狱
function getFile(fpath) {
// 只要promise一被创建里面的函数就会被执行
var promise=new Promise(function(resolve,reject){
fs.readFile(fpath, 'utf-8', (err, data) => {
if (err)
return reject(err)
resolve(data)
})
})
return promise
}
// 使用promise的then方法到达顺序读取
getFile('./1.txt')
.then(function(data){
console.log(data)
return getFile('./2.txt')
})
.then(function(data){
console.log(data)
return getFile('./3.txt')
})
.then(function(data){
console.log(data)
})
.catch(function(err){
// catch的作用:如果前面有任何的promise执行失败,则后面的promise不会执行下去,并抛出catch中的异常
console.log(err.message)
})
// //传统的回调方法
// getFile(path.join(__dirname, './1.txt'), (dataStr) => {
// console.log(dataStr)
// getFile(path.join(__dirname, './2.txt'), (dataStr) => {
// console.log(dataStr)
// getFile(path.join(__dirname, './3.txt'), (dataStr) => {
// console.log(dataStr)
// }, (err) => {
// console.log(err)
// })
// }, (err) => {
// console.log(err)
// })
// }, (err) => {
// console.log(err)
// })