ECMA Script 6_async 函数
async 函数
const promise = new Promise((resolve, reject)=>{
setTimeout(function(){
console.log("Done1"+"First");
resolve("Done1"+"First");
}, 1000);
});
async function fn(){
console.log("开始执行!"); // 只能在 async 函数里使用
await 123; // 只能在 async 函数里使用 // 只能在 async 函数里使用
await promise; // 异步等待,须包装成 Promise 对象 console.log("执行完了!");
}; fn();
真正意义上去解决异步回调的问题,
同步流程 表达 异步操作
本质上就是: Generator 的语法糖
- await promise;
等待异步操作
只会 等待 初始化状态的 Promise 实例(如果是失败状态,会报错)
const promise = new Promise((resolve, reject)=>{
setTimeout(function(){
resolve("1");
}, 1000);
}); async function fn(){
console.log('开始执行'); const result1 = await promise;
console.log(result1); const result2 = await new Promise((resolve, reject)=>{
setTimeout(function(){
resolve('2'); // 如果这里 reject() 则下面的代码都不会执行了
}, 2000);
}); const result3 = await new Promise((resolve, reject)=>{
setTimeout(function(){
resolve('3');
}, 3000);
});
}; var ret = fn();
console.log(ret); // 默认返回值 就是Promise 实例 ret.then(result=>{
console.log('全部都成功了');
console.log(result); // 如果没有返回值,默认 unfefined
}).catch(result=>{
// 必须是 await 修饰的 promise 实例,且必须 失败状态
console.log('Something is wrong!');
});
ECMA Script 6_async 函数的更多相关文章
- ECMA Script 6_函数的扩展
ES6规定只要函数参数使用了默认值.解构赋值.或者扩展运算符, 那么函数内部就不能显式设定为严格模式,否则会报错 1. 参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 函数 ...
- ECMA Script 6_Symbol() 唯一类型值声明函数_Symbol 数据类型
Symbol 数据类型 let s = Symbol(); typeof s; // "symbol" 是 ES6 继 Number,String,Boolean,Undefine ...
- ECMA Script 6_简单介绍
ECMAScript 6 ECMA 组织 前身是 欧洲计算机制造商协会 指定和发布脚本语言规范,标准在每年的 6 月份正式发布一次,作为当年的正式版本 这样一来,就不需要以前的版本号了,只要用年份标记 ...
- ECMA Script 6_模块加载方案 ES6 Module 模块语法_import_export
1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 其他语言都有这项功能: ...
- Android updater-scripts(Edify Script)各函数详细说明(转)
这是Android系统来运行updater-scripts的Edify语言的基本介绍. 大部分的Edify命名都是函数,当调用这些函数结束的时候,会返回数据给脚本.当然,你也可以使用这些函数的返回值来 ...
- ECMA script 6的新特性
简单介绍下ES6的新特性: (1)箭头操作符 :简化了函数的书写 (2)类的支持:引入了class关键字,对象的创建,继承更加直观,父类方法的调用,实例化,构造函数等概念更加形象化. (3)增强的对象 ...
- ECMA Script 6_数组的扩展_扩展运算符
1. 扩展运算符 内部调用的是数据结构的 Iterator 接口, 因此只要具有 Iterator 接口的对象,都可以使用扩展运算符 ... 如 map,,,, [...arr] 扩展运算符(spre ...
- ECMA Script 6_异步编程之 Promise
Promise 对象 异步编程 方案,已同步的方式表达异步的代码,解决回调地狱的问题 比传统的解决方案——回调函数和事件——更合理和更强大 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步 ...
- ECMA Script 6_必须要知道的基础
ES6 为了保持兼容性,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性: 另一方面规定,let 命令.const 命令.class 命令声明的全局变量,不属于 window ...
随机推荐
- [物理学与PDEs]第2章第1节 理想流体力学方程组 1.3 理想流体力学方程组的数学结构
1. 局部音速 $c$: $c^2=\cfrac{\p p}{\p \rho}>0$. 2. 将理想流体力学方程组 $$\beex \bea \rho\cfrac{\p {\bf u}}{\ ...
- git的使用 (一)
1.版本控制 版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方 ...
- react-router v4中 HashRouter 和 BrowserRouter的使用
遇到的问题 项目中控制路由跳转使用的是BrowserRouter,代码如下: ReactDOM.render(( <BrowserRouter> <div className=&qu ...
- Maven 构建浏览器解析userAgent类
创建Maven项目 添加pom.xml 依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...
- 编译Android ROM环境搭建
环境搭建 1 安装ubuntu 推荐12.04或13.10 2 安装jdk7和一些所需要的包安装jdk7$ sudo apt-get update$ sudo apt-get install open ...
- 第三节,目标检测---R-CNN网络系列
1.目标检测 检测图片中所有物体的 类别标签 位置(最小外接矩形/Bounding box) 区域卷积神经网络R-CNN 模块进化史 2.区域卷积神经网络R-CNN Region proposals+ ...
- Spring Cloud 2-Eureka服务发现注册(一)
Spring Cloud Eureka 1.服务端配置 pom.xml application.yml Application.java 2.客户端配置 pom.xml application.ym ...
- Dilated Convolution
各种各样的卷积方式, 详细见 各种卷积的 gif 图 Convolution animations  Padding, strides Transposed convolution animatio ...
- Struts2优缺点
优点: (1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现. (2) 丰富的标签库,大大提高了开发的效率. (3) Struts2提供丰富的拦截器实现. (4) 通过配置文件, ...
- mysql 客户端连接报错Illegal mix of collations for operation
服务端用的是utf-8,客户端工具打开表和视图是会报Illegal mix of collations for operation错误,经排查,可以采用以下语句解决 SET character_set ...