ES6 Promise 异步2

2019-03-18  本文已影响0人  崩鲨卡拉卡

概念:

使用:

这里写了一个简单的 读取txt内容的demo:
// 使用 Promise 方法阅读一个txt 文件
const fs=require('fs')
function read(fpath){
   var promise=new Promise(function(reslove,reject){
      //此处 reslove 和 reject 是形参
      fs.readFile(fpath,'utf-8',(err,datastr)=>{
         if(err) return reject(err);
         reslove(datastr);
      })
   })
   return promise;
}

//传入 seslove 和 reject 的方法
var p=read('./read.txt');
p.then((result) => {
   console.log(result);
}).catch((err) => {
   console.log(err);
});
上代码可以简化:
function read(fpath){
   return promise=new Promise(function(reslove,reject){
      //此处 reslove 和 reject 是形参
      fs.readFile(fpath,'utf-8',(err,datastr)=>{
         if(err) return reject(err);
         reslove(datastr);
      })
   })
}

//传入 seslove 和 reject 的方法
read('./read.txt').then((result) => {
   console.log(result);
}).catch((err) => {
   console.log(err);
});

使用 Promise 来解决回调地狱的问题:

// 使用 Promise 方法阅读一个txt 文件
const fs=require('fs')

function read(fpath){
   return promise=new Promise(function(reslove,reject){
      //此处 reslove 和 reject 是形参
      fs.readFile(fpath,'utf-8',(err,datastr)=>{
         if(err) return reject(err);
         reslove(datastr);
      })
   })
}

//传入 seslove 和 reject 的方法
read('./read.txt')
.then((result) => {
   console.log(result);
   
   //读取文件1
   return read('./read.1.txt')
})
.then((result)=>{
   console.log(result);

   // 读取文件2
   return  read('./read.2.txt')
})
.then((result)=>{
   console.log(result);
})

捕获异常的方式:

我们有两种处理异常的方式:

//传入 seslove 和 reject 的方法
read('./read.txt')
.then((result) => {
   console.log(result);
   return read('./read.1.txt')
})
.then((result)=>{
   console.log(result);

   // 读取文件2
   return  read('./read.22.txt')
})
.then((result)=>{
   console.log(result);
})
.catch((err)=>{
   console.log('读取失败拉'+err.message);
})
读取失败.png
上一篇 下一篇

猜你喜欢

热点阅读