异步操作和async函数
来源:互联网 发布:国产电视机 知乎 编辑:程序博客网 时间:2024/05/28 14:57
基本概念:
异步操作的方式:
1)callback:符合一定条件时,可以执行该段程序,是横向发展,所以可能造成callback hell(回调地狱);
2)Promise:根据Promise实例状态,从而决定下一步的操作, 是纵向发展的,但会出现代码冗余,语义不清晰;
3)generator:利用同步化语句处理异步操作,特点:
a)利用next方法分阶段执行generator函数内部的代码;
b)generator函数可以内外互相交换数据,yeild输出, next中的参数输入;
c)generator函数内部采用了try-catch方式,则外部调用throw方式抛出异常,内部可以捕捉异常进行处理;(外部抛出,内部扑捉)
async函数:异步操作的函数, 是generator的提高版;
async语法特点:async+await组合; generator:*+yield组合;
eg:
async function A(){
let a1=await B();
let a2=await C();
}
generator函数与async函数的区别
1)generator要么手动执行(ne由于xt),要么自动执行(外加co模块)才能运行;
async函数由于内置执行器,所 以可以一旦调用就自动执行代码,运行并输出最后的结果;
2)generator函数返回的是iterator对象;
async返回的是promise对象;
3)generator函数语义化不明显;
async函数语义化更为明显,它定义的函数为异步函数,await表示等待其后表达式的执行完成;
async函数运行规则:
1)async函数声明该函数为异步函数,await只存在与async函数中;
2)await+非promise对象:立即执行,不用等待;
await+promise对象:等待Promise对象完成,只有完成了才能继续向下执行;
3)await可以获取promise对象的返回值状态
4)可以在async函数中采用try-catch模式捕捉异常;
5)async函数返回一个Promise对象,该对象为:若async中所有Promise都为resolved,则为resolved;若某一个promise对象为rejected,则终止执行async函数,并返回rejected的promise对象;
- 异步操作和async函数
- ECMAScript6标准异步操作和Async函数
- ECMAScript6笔记:异步操作和Async函数
- 第十六节,异步操作和Async函数
- ECMAScript 6 学习笔记----异步操作和Async函数
- 自学-ES6篇-异步操作和Async函数
- ES6学习15(异步操作和Async函数)
- async和await异步操作
- Async 异步操作
- async/await 异步函数
- Async Functions (异步函数)
- async/await 异步函数
- Async Functions (异步函数)
- JS异步之async函数
- ES2017 异步函数async/await
- Async和await异步编程
- Andorid学习记录—Async异步操作
- 用 Async 函数简化异步代码
- hbase读写demo
- html a超链接标签
- 图是否是树
- HDU2532 Engine(AC)
- HDU 6052 To my boyfriend
- 异步操作和async函数
- (hdu1394)Minimum Inversion Number (树状数组/线段树/归并排序)
- 导航栏上使链接间距相等的方法
- java中以JDOM4的方式来对xml文件对象进行解析操作
- Java面试绕不开的问题: Java中HashMap底层实现原理(JDK1.8)源码分析
- 多项式及其计算
- 浅析MySQL支持的数据类型
- 项目所得
- UVA