03-es6语法 Promise 和 es8语法 async await 的了解和基本使用
//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 的了解和基本使用的更多相关文章
- JS异步编程 (2) - Promise、Generator、async/await
JS异步编程 (2) - Promise.Generator.async/await 上篇文章我们讲了下JS异步编程的相关知识,比如什么是异步,为什么要使用异步编程以及在浏览器中JS如何实现异步的.最 ...
- ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await
ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await co ...
- ES6、ES7、ES8语法总结
ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用于不能被重新赋值的变量 2. 箭头函数 我们经常要给回调函数给一个父级的this 常用办法就是 ...
- ES8之async/await学习随笔
详细学习参考文档: 阮一峰老师的博客,覆盖知识点ES6/7/8/9,本篇学习笔记对阮老师的关于async/await文档中的知识点进行分点总结 在ES8中加入async/await新特性后,很明显带来 ...
- Promise、Generator,Async/await
我们知道JavaScript是单线程语言,如果没有异步编程非得卡死. 以前,异步编程的方法有下面四种 回调函数 事件监听 发布/订阅 Promise对象 现在据说异步编程终极解决方案是——async/ ...
- 事件循环 EventLoop(Promise,setTimeOut,async/await执行顺序)
什么是事件循环?想要了解什么是事件循环就要从js的工作原理开始说起: JS主要的特点就是单线程,所谓单线程就是进程中只有一个线程在运行. 为什么JS是单线程的而不是多线程的呢? JS的主要用途就是与用 ...
- promise 进阶 —— async / await 结合 bluebird
一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...
- ES7/ES8 语法学习
作为一个前端开发者,感觉需要学习的东西贼多,ES6刚学会用没多久,又得学习了解ES7/ES8新增的东西,这里是看了大佬们文章的一点点总结以及摘抄的内容,给自己当笔记使用 内容转载自:https://w ...
- ES6、ES7、ES8
ES6 https://es6.ruanyifeng.com/ ES7 1.Array.prototype.includes() includes()作用,是查找一个值在不在数组里,若是存在则返回 ...
随机推荐
- 7zip,命令行解压报错:7-Zip cannot find the code that works with archives.
简单的命令: 7z x zipfile.7z 7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Error: 7-Zip cannot ...
- npm vue ivew vue-cli3
2019-4-10 10:56:20 星期三 学习iview时需要搭建一套node环境, 这里记录下来 1. 下载安装nodejs //自带了npm包管理器 2. 设置npm的全局配置: 全局包默认 ...
- springboo+nginx测试反向代理01
操作环境:centos7,springboot2.1,nginx1.8.1 boot程序链接地址 : https://github.com/zgq7/nginxDemo nginx下载地址: http ...
- margin合并和浮动
1.父子元素margin塌陷问题子元素设置margin-top作用于父元素时, 会产生margin合并问题. 解决方法是: 给父元素的::before伪元素设置为display:table属性, 其中 ...
- 程序员不能忍996了!全民 fuck ,GitHub来说话
前两天有个Github超级火的一个项目,在一小时之内星标上千. https://github.com/997icu/996.ICU 截至目前 这个项目start数量超过63K.Issues5000 ...
- MySQL---DDL+DQL---(四)
三.对数据库表记录进行操作(修改DDL) 1.插入记录:insert 语法:insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..);--向表中插入某些列in ...
- https请求之绕过证书安全校验相关配置
需在weblogic服务器上配置内存溢出的地方加入一行配置: -DUseSunHttpHandler=true 注:空格隔开 然后调用工具类:https://www.cnblogs.com/ ...
- java springboot 大文件分片上传处理
参考自:https://blog.csdn.net/u014150463/article/details/74044467 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时 ...
- layui报错 "Layui hint: 模块名 xxx 已被占用" 的问题解决方案
由于扩展模块数量众多, 于是我需要将扩展模块分类到二级文件夹中, 我在页面中是这么写的 <script> layui.extend({ courseTask: 'task/courseTa ...
- Java生日计算年龄工具
package com.web.backend.util; import java.util.Calendar;import java.util.Date; /** * @Author: SongZS ...