var fs = require('fs');

function getSize(code) {
  return (code.length / 1024).toFixed(2) + 'kb';
}

function blue(str) {
  return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m';
}

function write(dest, code, bundle) {
  return new Promise(function (resolve, reject) {
    fs.writeFile(dest, code, function (err) {
      if (err) return reject(err);
      console.log(blue(dest) + ' ' + getSize(code));
      resolve(bundle);
      //? 第三个参数 什么意思 第一遍没看懂
      // 打印 undefined 然后 想起promise then catch 
    });
  });
}

write('dist/vue-resource.common.js', 'console.log(11111)', function(){
console.log('文件写入成功')
}).then(function(results) {
  console.log("results here: " + results)
}).catch(function(err) {
  console.log("error here: " + err);
});


// lenovo@lenovo-PC MINGW64 /e/jackieli/node-code-write-练习/fs
// $ node writeFile-Promise.js
// dist/vue-resource.common.js 0.02kb
// results here: function(){
//   console.log('文件写入成功')
// }


## 自带async try catch 捕获错误


 
function readFile(name) {
 return new Promise((resolve, reject) => {
  //异步读取文件
  fs.readFile(name, (err, data) => {
    if (err) reject(err);
    else resolve(data);
  });
 });
}

async function read3Files() {
 try {
   //读取第1个文件
   let data1 = await readFile('file1.txt');
   //读取第2个文件
   let data2 = await readFile('file2.txt');
   //读取第3个文件
   let data3 = await readFile('file3x.txt');
   //3个文件读取完毕
  } catch (error) {
    //读取出错
  }
}