前言
async-awai
t是promise
和generato
r的语法糖。只是为了让我们书写代码时更加流畅,当然也增强了代码的可读性。简单来说:async-await
是建立在 promise
机制之上的,并不能取代其地位。
基本语法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16let awaitPromise = new Promise((resolve,reject)=>{ … resolve(“successful”); }) async function basicDemo() { let result = await Math.random(); let asyncResult = await awaitPromise; console.log(result); return asyncResult } basicDemo().then((value)=>{ console.log(value); }); // successful
注意事项及特性
1、直接获取Promise返回值
复制代码
1
2let asyncResult = await awaitPromise;
asyncResult
不用.then()
操作就可以获取resolve()
的值
2、只有当async函数中有return
的时候,才会返回Promise对象
,这时.then()
才有效果
3、await
命令后面是一个Promise对象
,也可以是原始类型
的值
当await
函数是数值、字符串和布尔值等原始类型时,但这时等同于同步操作。
复制代码
1
2
3
4
5
6
7
8async function asyncBasic() { let asnum = await setTimeout(()=>{ num++; },5000) await num++; return num; }
这种写法setTimeout是不起作用的
4、当存在多个await
时,只要有一个await后的Promise变成reject
,则后面的await
将不再执行。
可以使用catch
进行错误的捕获;或者把await命令放在try...catch
代码块中。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12async function basicDemo() { try{ let result = await Math.random(); let asyncResult = await awaitPromise; console.log(result); return asyncResult } catch(err){ console.lot(err); } }
async-await函数最常见用法
使用多个Promise异步操作完成后进行操作
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13var promise01 = new Promise(function(resolve,reject){ ... resolve(); }) var promise02 = new Promise(function(resolve,reject){ ... resolve(); }) var promise03 = new Promise(function(resolve,reject){ ... resolve(); })
Promise写法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13let allPromise = new Promise((resolce,reject)=>{ promise01.then(function( return promise02 ){}).then(function(){ return promise03 }).then(function(){ resolve(“success”); }) }) allPromise.then(()=>{ })
async-await函数写法
复制代码
1
2
3
4
5
6
7
8
9
10
11async function asyncPromise (){ await promise01; await promise02; await promise03; return “success” } asyncPromise().then(()=>{ });
最后
以上就是醉熏康乃馨最近收集整理的关于ES6 Async/Await函数的全部内容,更多相关ES6内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复