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()作用,是查找一个值在不在数组里,若是存在则返回 ...
随机推荐
- Python 并发编程
进程 开启进程 from multiprocessing import Process import time def task(name): print('%s is running' %name) ...
- [insight] debug
python: 1. print理解流程 print('xy1') print('xy2') 可以更好地跟踪函数的执行流程,分析代码 2. 用python库 import pdb; pdb.set_t ...
- 软件工程作业-(third)
1.选题目(1) 最大连续子数组和(最大子段和) 问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值. ...
- Java 关于类的构造方法的一点认识
2019年4月21日 星期天 在ORACLE官网上提供的The Java™ Tutorials中,有一节课Providing Constructors for Your Classes(为你的类提供构 ...
- 运行Scrapy程序时出现No module named win32api问题的解决思路和方法
有小伙伴在群里边反映说在使用Scrapy的时候,发现创建项目一切顺利,但是在执行Scrapy爬虫程序的时候却出现下列报错:“No module named win32api”,如下图所示,但是不知道怎 ...
- Ubuntu 18.04 安装MySQL
最近在写东西的时候,需要用到MySQL,在网上查了一下,都说Ubuntu18.04不能安装MySQL5.7.22, 总觉的不可能,所以自己就研究了一下,然后分享给大家 工具/原料 VMware W ...
- ansible中的map
ansible中的filter: map ,其实是jinja2中的filter python中 map(func, iter) 返回func与每个元素计算后的迭代器,iter是个可迭代对象 an ...
- 【JavaScript】$.extend使用心得及源码研究
最近写多了js的面向对象编程,用$.extend写继承写得很顺手.但是在使用过程中发现有几个问题. 1.深拷贝 $.extend默认是浅拷贝,这意味着在继承复杂对象时,对象中内嵌的对象无法被拷贝到. ...
- 使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
2016年11月21日 10:30:00 xian_02 阅读数:10943 Nginx是一款轻量级高性能服务器软件,虽然轻量,但功能非常强大,可用于提供WEB服务.反向代理.负载均衡.缓存服务. ...
- sqlserver 删除表 视图 函数 存储过程
use tax_ceshiselect 'DROP TABLE '+name from sysobjects where type = 'U'union select 'DROP VIEW '+nam ...