//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. mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法

    环境 CentosOS 6.5 ,已安装mysql 情景 root密码忘记,使用普通用户无法登录 解决 问题一 无法使用mysql命令 参考文章:https://www.cnblogs.com/com ...

  2. c++入门篇五

    默认参数: //默认参数//函数的默认参数,参数后面有'='//函数参数注意事项,如有一个位置有了默认参数//那么从该位置的后面就必须要有参数 , ) { //b有默认参数,b的后面也应该要有默认参数 ...

  3. form中的button默认提交事件

    <form action=""> <input autocomplete="off" type="text" name=& ...

  4. java web项目最简单的结构

    为了解“徒手”建立一个web应用,此博客建立简单过程 1.在任意一个目录下,建立一个文件夹,取名字 webDemo .这个应用名字. 2.在 webDemo 内建立一个 WEB-INF 文件夹,此处大 ...

  5. Windows Internals 笔记——线程调度

    1.线程内核对象中的CONTEXT反应了线程上一次执行时CPU寄存器的状态.大约每隔20ms,Windows都会查看所有当前存在的线程内核对象.Windows在可调度的线程内核对象中选择一个,并将上次 ...

  6. Webpack 开发服务器代理设置解决跨域问题

    在前端开发过程中,可能会遇到跨域问题,在 webpack 设置中对 devServer 配置代理即可解决跨域问题,具体设置如下: webpack.config.js module.exports = ...

  7. android studio 虚拟机adb.exe已停止工作的处理

    在搭建完android studio 后使用虚拟机或真机调试程序,出现如下错误.   在运行里输入cmd,打开命令行工具,使用netstat -aon|findstr 5037查看adb.exe的50 ...

  8. vue中使用postMessage进行跨越传值

    想在“当前位置”获取子页面的title属性,但是main页面和子页面在不同的端口上,直接获取会出现: “Blocked a frame with origin from accessing a cro ...

  9. c++ 积累

    class MyClass { public: MyClass()=default; MyClass(const MyClass& )=delete; ...... 有些时候我们希望限制默认函 ...

  10. 基于Cmake+QT+VS的C++项目构建开发编译简明教程

    目录 一.工具下载与安装 1.     Qt 2.     Visual Studio 2015 3.     Cmake 二.C++及Qt项目构建 1.     基于VS构建Qt项目 2.     ...