【JavaScript】--- ES6/ES7/ES8
一、async
async其实是ES7才有有的关键字,async的意思是异步,顾名思义是有关异步的操作
async用于声明一个函数是异步的。
通常情况下async、await都是跟随promise一起使用,因为async返回值都是一个promise对象,async适用于任何类型的函数上
二、基本使用
使用async其实很简单,只需要在函数前面加一个async即可,这个函数的返回值是一个promise
//用来声明一个函数是异步的
async function fn(){
return 123;
} //返回值是一个promise
console.log(fn())
/*
Promise
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: 123 */ //可以通过.then拿到返回值
fn().then((data)=>{
console.log(data);//
})
三、await
await关键字不能够单独使用,必须在async中进行使用
await等待异步执行返回结果后才会执行下面的代码,其实await就是阻止主函数的运行
function fn(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(1111);
resolve()
},2000)
})
}
async function fn1(){
await fn();
setTimeout(()=>{
console.log(2222);
},1000)
}
fn1()
四、如何实现多个异步同步执行
function fn(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(1111);
resolve()
},3000)
})
}
function fn1(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(2222);
resolve()
},2000)
})
}
function fn2(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(3333);
resolve()
},1000)
})
}
async function fn3(){
await fn();
await fn1();
await fn2();
}
fn3()
五、总结
async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
因此如果需要实现多个异步同步执行必须每次await后都返回一个新的promise
【JavaScript】--- ES6/ES7/ES8的更多相关文章
- 【前端】【javascript】es6中的遍历器接口Iterator
好久没发文章啦-.-为了证明我还活着,我决定从笔记里面抓一篇还算不乱比较像文章的发出来... 这些笔记是我在学es6的时候断断续续记录的,最近会一份一份整理陆陆续续发出来,顺便也自己再看一遍.我学习e ...
- 【JavaScript】ES6 新语法
function* 声明 function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象. 生成器是一种可以从中退出并在之后重新 ...
- 【15】ES6 for Humans: The Latest Standard of JavaScript: ES2015 and Beyond
[15]ES6 for Humans 共148页: 目前看到:已经全部阅读. 亚马逊地址: 魔芋:总结: 我先看的是阮一峰的在线书籍.这本书的内容很多都与之重复的. 居然卖¥463.也是没谁了. ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- 【JavaScript】出现即使设置了ID也获取不到的可能原因与window.onload
有时候.在JavaScript中.即使设置了ID也有可能出现document.getElementById()获取不到的情况,然后你就開始想document是否写错之类的.事实上根本就不是你的代码的大 ...
- 【JavaScript】我的JavaScript技术总结第一篇——编程细节
遍历数组 for (var i=0, l=arr.length; i<l; i++) 这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显. 判断变量的真假 if ...
- 【JavaScript】下大雪
引用[JavaScript]满天星的代码,稍作修改的结果: function drawStars() { for (i = 1; i < 100; ++i) { ctx.fillText(&qu ...
- 【JavaScript】JavaScript中的replaceAll
JavaScript中是没有replaceAll的.仅仅有replace,replace仅仅能替换字符中的第一个字符.并且这个replace里面不支持正則表達式,以达到replaceAll的目的. 只 ...
- 【JavaScript】Leetcode每日一题-在D天内送包裹的能力
[JavaScript]Leetcode每日一题-在D天内送包裹的能力 [题目描述] 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i] ...
随机推荐
- WPF腾讯视频通话开发
一.IntPtr.HandleC#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄. 1.WPF窗口句柄IntPtr wnip = new System.Windows.I ...
- centos7安装配置mysql5.6
1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-co ...
- 添加JavaDoc
使用javadoc比较容易生成文档,命令如下: javadoc -d doc -sourcepath src/main/java/ -subpackages com -encoding UTF-8 - ...
- spring mvc 链接 postgresql
上一篇文章已经分享了搭建springmvc:http://www.cnblogs.com/liqiu/p/4252788.html 这一篇来链接数据库postgresql 1.在pom.xml添加几个 ...
- 你可能不知道的51个Linux经典命令
1.删除0字节文件 代码如下: find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列 代码如下: ps -e -o "%C : %p ...
- 基于CentOS 7 搭建 GitLab
系统要求:CentOS 7.2 64 位操作系统 更新软件包 yum update -y 安装和启动 sshd 安装 sshd: yum install -y curl policycoreutils ...
- maven打包含有多个main程序的jar包及运行方式
pom.xml <build> <plugins> <plugin> <groupId> ...
- 11G新特性 -- Result Cache
共享池存放sql语句的解析和编译版本,以便数据库能快速执行频繁执行的sql语句和plsql. 在11g中,数据库使用result cache来存放sql和plsql的执行结果. result cach ...
- Linux之sort
sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按AS ...
- Oracle同一个用户下启动多个数据库实例
oracle@yingxiang-testServer1 oradata]$ export ORACLE_SID=APPDB[oracle@yingxiang-testServer1 oradata ...