Async/Await简介
async/await是写异步代码的新方式,以前的方法有回调函数和Promise。
async/await是基于Promise实现的,它不能用于普通的回调函数。
async/await与Promise一样,是非阻塞的。
async/await使得异步代码看起来像同步代码,这正是它的魔力所在。
Async/Await语法
Fn函数有个promise resolve结果。并且打印出执行的顺序
const fn = () => {
console.log(1)
Promise.resolve('ddd')
console.log(2)
return '000'
}
这里调用了上面的fn,并且打印执行顺序,注意await关键字只能用在async定义的函数内,async函数会隐式地返回一个promise,该promise的reosolve值就是函数return的值。(示例中reosolve值就是字符串”555”)
const api = async () => {
console.log(3)
console.log('test', await fn())
console.log(4)
return '555'
}
这里使用api()时执行上面的模拟异步函数,但是后面如果使用.then 则函数需要有返回值,并且.then里返回的也是一个promise
api().then(res => {console.log(res)})
5
api().then(res => {console.log(res); return '666'})
6
当然实际使用时使用Async/Await语法就不需要写.then,因为可以直接得到fn返回的结果,在上面就是000,而fn中的promise.resolve没关系,因为不是return的他~
var api = async () => {
const res = await fn()
return res
}