async,await
async
是
Generator
的语法糖,异步编程的终极解决方案,彻底解决回调地狱的问题
async
用来声明一个function是异步的,而
await
用来等待一个异步函数的执行
注意:
await
只能出现在
async
函数里面
async
async function asyncfunc() {
return '奥里给'
}
const result = asyncfunc()
console.log(result) // Promise
result.then((val)=> {
console.log(val) // 奥里给
})
这里我们可以看到
async
函数输出的是一个
Promise
对象,如果
async
函数中没有返回值它会返回一个
Promise.resolve(undefined)
await
-
await
可以理解为
async wait
-
await
在我看来是先执行右侧表达式,再等待右侧表达式的返回值 -
await
后面可以跟任何的JS表达式 -
如果
await
等待的不是
Promise
对象,那
await
的返回值就是右侧表达式的运算结果。 -
如果
await
等到的是
Promise
对象,那
await
就会
阻塞
后面的代码,等待
Promise
对象执行
resolve()
,
await
的返回值就是此
resolve()
中的参数
注意:
这里讲的阻塞指的是
async
函数内部的阻塞。来,举个例子:
// 1. 正常Promise
new Promise((resolve, reject) => {
console.log(1);
resolve(4);
}).then((val) => {
console.log(val)
})
new Promise((resolve, reject) => {
console.log(2);
resolve(5);
}).then((val) => {
console.log(val)
})
new Promise((resolve, reject) => {
console.log(3);
resolve(6);
}).then((val) => {
console.log
版权声明:本文为abxxcd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。