Promise catch方法 读取多个文件 封装ajax 请求

--------------
  基础
const p = new Promise(function(resolve,reject){
        setTimeout(() => {

        //  let data = '数据库中的用户数据';
        //  resolve(data);

        let err = '数据读取失败';
        reject(err)
 
        }, 1000);
      });

      p.then(function(value){
        console.log(value);
      },function(reason){
        // console.log(reason);
        console.error(reason);
      })
 
----------------------

// 引入 fs 模块
const fs = require('fs');

// 2 调用方法读取文件
// fs.readFile('./test.md',(err,data)=>{
//   // 如果 出错 则抛出错误
//   if(err) throw err;
//   // 如果没出错, 则输出内容
//   console.log(data.toString());
// })

// 3 使用 Promise 封装
const p = new Promise(function(resolve,reject){
  fs.readFile('./test.m3d',(err,data)=>{
        // 如果 出错 则抛出错误
        if(err) reject(err);
        // 如果没出错, 则返回内容
        resolve(data); 
    })
})

p.then(function(value){
  console.log(value.toString());
},function(reason){
  console.log(reason);
  console.log('读取失败');
})
--------------------------------
  封装ajax 请求

    // 接口地址: https://api.apiopen.top/getJoke

    // // 1 创建对象
    // const xhr = new XMLHttpRequest();

    // // 2 初始化
    // xhr.open("GET","https://api.apiopen.top/getJo3ke");

    // // 3 发送
    // xhr.send();

    // // 4 绑定事件 处理响应结果
    // xhr.onreadystatechange = function(){
    //    // 判断状态 
    //   if(xhr.readyState === 4){
    //     // 判断响应状态码 200 - 299
    //     if(xhr.status >= 200 && xhr.status < 300){
    //       // 表示成功
    //       console.log(xhr.response);
    //     }else{
    //       console.error(xhr.status);
    //     }

    //   }

    // }


    //promise 封装

    const p = new Promise((resolve,reject)=>{
      // 1 创建对象
      const xhr = new XMLHttpRequest();
          // 2 初始化
      xhr.open("GET","https://api.apiopen.top/getJoke"); 
      // 3 发送
      xhr.send();

      // 4 绑定事件 处理响应结果
      xhr.onreadystatechange = function(){
        // 判断状态 
        if(xhr.readyState === 4){
          // 判断响应状态码 200 - 299
          if(xhr.status >= 200 && xhr.status < 300){
            // 表示成功
            // console.log(xhr.response);
            resolve(xhr.response)
          }else{
            // console.error(xhr.status);
            reject(xhr.status)
          } 
        }

      }
    })

     
    // 指定回调 
    p.then(function(value){
      console.log(value);
    },function(reason){
      console.error(reason);
    }) 



-------------------------------------

promise-读取多个文

const fs = require('fs');

// fs.readFile('./test.md',(err,data1)=>{
//   fs.readFile('./test2.md',(err,data2)=>{
//     fs.readFile('./test3.md',(err,data3)=>{
//       let result = data1 + '\r\n' + data2 + '\r\n' + data3;
//       console.log(result);
//     })
//   })
// })

// 使用 promise 实现 

const p = new Promise((resolve, reject)=>{
  fs.readFile('./test.md',(err,data)=>{
     resolve(data)
  })
})

p.then(value=>{
  return new Promise((resolve,reject)=>{
    fs.readFile('./test2.md',(err,data)=>{
      resolve([value,data])
   })
  }) 
}).then(value=>{
  return new Promise((resolve,reject)=>{
    fs.readFile('./test3.md',(err,data)=>{ 
      value.push(data);
      resolve(value);
   })
  }) 
}).then(value=>{
  // console.log(value.toString()); 
  console.log(value.join('\r\n'));
  
})
 
// console.log(value.toString());

-------------

 
   catch方法
     const p = new Promise((resolve,reject)=>{
        setTimeout(() => {
          // 设置 p 对象 的状态为失败 并设置 失败的值
          reject("出错了")
        }, 1000);
     })

    //  p.then(function(value){},function(reason){
    //     console.error(reason);
    //   })

    p.catch(function(reason){
      console.warn(reason);
    })
posted @ 2021-05-17 21:17  13522679763-任国强  阅读(102)  评论(0)    收藏  举报