03-es6语法 Promise 和 es8语法 async await 的了解和基本使用

  1 //Promise 
  2 
  3 // 1.说明 : Promise 是 es6 中提出的新语法
  4 // 2.作用 : 用 '用户编写同步代码' 的方式 '处理异步' 的一种解决方案
  5 // 3.以前 : 处理异步 , 都是通过回调处理的 ,
  6   // ==> 比如 :
  7 
  8     setTimeout(() => {}, 0);
  9 
 10     $.ajax({
 11       url: '',
 12       type: '',
 13       data: {},
 14       dataType: json,
 15       success: res => {
 16         $.ajax({
 17           url: '',
 18           type: '',
 19           data: {},
 20           dataType: json,
 21           success: res => {
 22             $.ajax({
 23               url: '',
 24               type: '',
 25               data: {},
 26               dataType: json,
 27               success: res => {}
 28             });
 29           }
 30         });
 31       }
 32     });
 33 
 34 
 35   // 现在 : 可以使用 Promise 解决回调地狱的问题
 36    // ==> 比如 :
 37  
 38     promise.then().then().then() ...
 39   
 40 // 4.Promise 的基本使用
 41   // ① Promise 是一个构造函数
 42   // ② () 中是一个回调函数 => 里面有两个参数 :
 43     // 参数 1: resolve: 一个回调 => 成功操作会调用
 44     // 参数 2: resolve: 一个回调 => 成功操作会调用
 45   // ③ promise 里面一般会放一个异步操作 :
 46     // 比如 :
 47 
 48  
 49   const p = new Promise((resolve, reject) => {
 50     setTimeout(() => {
 51       // 成功操作时执行 : resolve()
 52       // 失败操作时执行 : reject()
 53     }, 0);
 54   });
 55 
 56 // 5.示列 (用 promise 封装一个异步读取文件 node.js)
 57 
 58   const fs = require('fs');
 59   //封装
 60   const p = new Promise((resolve, reject) => {
 61     fs.readFile('路径', 'utf//8', (err, data) => {
 62       // 处理错误
 63       if (err) {
 64         return reject(err);
 65       }
 66       resolve(data);
 67     });
 68   });
 69 
 70   // 使用
 71   p.then(res => {
 72     console.log(res);
 73   }).catch(err => {
 74     console.log(err);
 75   });
 76 
 77 
 78 
 79   
 80  
 81   // async 和 await
 82 
 83   const fs = require('fs');
 84   const axios = require('axios');
 85 
 86   // 1.说明 : async 和 await 是 es8 中提出的新语法
 87   // 2.作用 : 用 `编写同步代码` 的方式 处理异步 , 处理的更彻底
 88   // 3. async 和 await 的基本使用 :
 89     // ① async : 修饰一个函数(内部有异步操作的函数)
 90     // ==> 格式 : async function fn() { }
 91     // ② await : 修饰一个异步操作(promise 实例)
 92     // ==> 格式 : await 异步操作(promise 实例)
 93 
 94     async function fn() {
 95       //正确执行try里面的代码
 96       try {
 97       //axios.get('http://localhost:3000/first') ==> promise 实例
 98       let data = await axios.get('http://localhost:3000/first');
 99       console.log('成功操作', data);
100       } catch (err) {
101       //错误执行catch 里面的代码
102       console.log('失败操作');
103       }
104     }
105 
106     fn();
107     // 4. 注意点 : ① async 和 await 是成对出现的
108            // ② async 和 await 处理异常(报错) 需要配黑 try {} catch() {}
109            // ③ async 一定要加载 await 外部最近的一个函数上面
原文地址:https://www.cnblogs.com/sikongdada/p/10652559.html