//Promise 

 // 1.说明 : Promise 是 es6 中提出的新语法
// 2.作用 : 用 '用户编写同步代码' 的方式 '处理异步' 的一种解决方案
// 3.以前 : 处理异步 , 都是通过回调处理的 ,
// ==> 比如 : setTimeout(() => {}, 0); $.ajax({
url: '',
type: '',
data: {},
dataType: json,
success: res => {
$.ajax({
url: '',
type: '',
data: {},
dataType: json,
success: res => {
$.ajax({
url: '',
type: '',
data: {},
dataType: json,
success: res => {}
});
}
});
}
});   // 现在 : 可以使用 Promise 解决回调地狱的问题
 // ==> 比如 : promise.then().then().then() ... // 4.Promise 的基本使用
// ① Promise 是一个构造函数
// ② () 中是一个回调函数 => 里面有两个参数 :
// 参数 1: resolve: 一个回调 => 成功操作会调用
// 参数 2: resolve: 一个回调 => 成功操作会调用
// ③ promise 里面一般会放一个异步操作 :
// 比如 : const p = new Promise((resolve, reject) => {
setTimeout(() => {
// 成功操作时执行 : resolve()
// 失败操作时执行 : reject()
}, 0);
}); // 5.示列 (用 promise 封装一个异步读取文件 node.js) const fs = require('fs');
//封装
const p = new Promise((resolve, reject) => {
fs.readFile('路径', 'utf//8', (err, data) => {
// 处理错误
if (err) {
return reject(err);
}
resolve(data);
});
}); // 使用
p.then(res => {
console.log(res);
}).catch(err => {
console.log(err);
});      // async 和 await   const fs = require('fs');
  const axios = require('axios');   // 1.说明 : async 和 await 是 es8 中提出的新语法
  // 2.作用 : 用 `编写同步代码` 的方式 处理异步 , 处理的更彻底
  // 3. async 和 await 的基本使用 :
    // ① async : 修饰一个函数(内部有异步操作的函数)
    // ==> 格式 : async function fn() { }
    // ② await : 修饰一个异步操作(promise 实例)
    // ==> 格式 : await 异步操作(promise 实例)     async function fn() {
      //正确执行try里面的代码
      try {
      //axios.get('http://localhost:3000/first') ==> promise 实例
      let data = await axios.get('http://localhost:3000/first');
      console.log('成功操作', data);
      } catch (err) {
      //错误执行catch 里面的代码
      console.log('失败操作');
      }
    }     fn();
    // 4. 注意点 : ① async 和 await 是成对出现的
           // ② async 和 await 处理异常(报错) 需要配黑 try {} catch() {}
           // ③ async 一定要加载 await 外部最近的一个函数上面

03-es6语法 Promise 和 es8语法 async await 的了解和基本使用的更多相关文章

  1. JS异步编程 (2) - Promise、Generator、async/await

    JS异步编程 (2) - Promise.Generator.async/await 上篇文章我们讲了下JS异步编程的相关知识,比如什么是异步,为什么要使用异步编程以及在浏览器中JS如何实现异步的.最 ...

  2. ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await

    ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await co ...

  3. ES6、ES7、ES8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用于不能被重新赋值的变量 2. 箭头函数 我们经常要给回调函数给一个父级的this 常用办法就是 ...

  4. ES8之async/await学习随笔

    详细学习参考文档: 阮一峰老师的博客,覆盖知识点ES6/7/8/9,本篇学习笔记对阮老师的关于async/await文档中的知识点进行分点总结 在ES8中加入async/await新特性后,很明显带来 ...

  5. Promise、Generator,Async/await

    我们知道JavaScript是单线程语言,如果没有异步编程非得卡死. 以前,异步编程的方法有下面四种 回调函数 事件监听 发布/订阅 Promise对象 现在据说异步编程终极解决方案是——async/ ...

  6. 事件循环 EventLoop(Promise,setTimeOut,async/await执行顺序)

    什么是事件循环?想要了解什么是事件循环就要从js的工作原理开始说起: JS主要的特点就是单线程,所谓单线程就是进程中只有一个线程在运行. 为什么JS是单线程的而不是多线程的呢? JS的主要用途就是与用 ...

  7. promise 进阶 —— async / await 结合 bluebird

    一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...

  8. ES7/ES8 语法学习

    作为一个前端开发者,感觉需要学习的东西贼多,ES6刚学会用没多久,又得学习了解ES7/ES8新增的东西,这里是看了大佬们文章的一点点总结以及摘抄的内容,给自己当笔记使用 内容转载自:https://w ...

  9. ES6、ES7、ES8

    ES6 https://es6.ruanyifeng.com/   ES7 1.Array.prototype.includes() includes()作用,是查找一个值在不在数组里,若是存在则返回 ...

随机推荐

  1. Nginx动态路由的新姿势:使用Go取代lua

    导语: 在Nitro 中, 我们需要一款专业的负载均衡器. 经过一番研究之后,Mihai Todor和我使用Go构建了基于Nginx.Redis 协议的路由器解决方案,其中nginx负责所有繁重工作, ...

  2. No grammar constraints (DTD or XML Schema) referenced in the document.

    问题描述 web.xml 使用 Servlet4.0 版本,No grammar constraints (DTD or XML Schema) referenced in the document. ...

  3. SQL语句:子查询

    一,子查询定义: 子查询就是嵌套在主查询中的查询. 子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 但并不是每个位置嵌套子 ...

  4. VS 编码规范---- 代码注释设置

    一个良好的代码风格在开发过程和后期维护过程中是必不可少的.每次在添加新类的时候都需要添加一些关于类的注释,包括创建时间.创建人.类的功能介绍.修改时间等一系列的信息,以方便以后的查找和快速了解.在Co ...

  5. 【算法】CRF(条件随机场)

    CRF(条件随机场) 基本概念 场是什么 场就是一个联合概率分布.比如有3个变量,y1,y2,y3, 取值范围是{0,1}.联合概率分布就是{P(y2=0|y1=0,y3=0), P(y3=0|y1= ...

  6. selenium对百度进行登录注销

    #百度登录退出demo import time from selenium import webdriver from selenium.webdriver.common.action_chains ...

  7. webstorm 2019.1 注册教程

    注册教程:https://blog.csdn.net/hdp134793/article/details/81530472 IntelliJ IDEA 注册码获取网站

  8. lombok @Accessors用法

    @Accessors 翻译是存取器.通过该注解可以控制getter和setter方法的形式. fluent 若为true,则getter和setter方法的方法名都是属性名,且setter方法返回当前 ...

  9. 自定义URL Protocol 协议

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\fuck] @="fuck Protocol" "URL ...

  10. ***CodeIgniter框架集成支付宝即时到账支付SDK

    本文为CI集成支付宝即时到账支付接口 1.下载支付宝官方demo ;即时到账交易接口(create_direct_pay_by_user)(DEMO下载) 原文地址:https://doc.open. ...