<script>
// async是”异步“的简写,而await是async wait的简写,所以async的作用就是
// 用于声明一个function是异步的,而await用于等待一个异步方法执行完成
// async的使用,关键在于它怎么处理返回值
async function fun() {
return "12345"
}
const result = fun()
console.log(result) //结果是一个Promise对象
// 所以,async函数返回的是一个Promise对象。所以在最外层不能用await获取其返回值的情况下
// 我们可以用then()方法处理这个Promise对象
fun().then(res => {
console.log(res) //12345
})
// 在没有await的情况下执行async函数,它会立即执行,返回一个Promise对象,不会阻塞后的语句的执行
// await的作用
// await是等侍一个async函数执行完成的返回值
function a() {
return "A"
}
async function b() {
return Promise.resolve("B")
}
async function c() {
const r1 = await a()
const r2 = await b()
console.log(r1, r2)
}
c() // A B
// await等到的不是一个 Promise 对象,那 await 结果就是它等到的东西
// 等到的是一个 Promise 对象,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,为 await 结果
// async 函数调用不会造成阻塞,它被封装在一个 Promise 对象中异步执行,所以await必须用在async函数中。
//async/await是写异步代码的新方式,以前的方法有回调函数和Promise
// async/await是基于Promise实现的,他不能用于普通的函数
// async/await与Promise一样,是非阻塞的
// async/await使得异步代码看起来像同步代码
// Promise写法
const a = () => {
return p1().then(res1 => {
return p2(res1).then(res2 => {
return p3(res1, res2)
})
})
}
// 用aysnc/await写法
const maskRrequest = async () => {
const res1 = await promise1()
const res2 = await promoise2(res1)
return await promise(res1, res2)
}
// async await的优势
// 1)使用async函数可以使代码简洁很多,不需要像promise一样需要.then,避免了嵌套代码。
// 2)错误处理:async/await,用try/catch可以同时处理同步和异步错误。
</script>
async/await的解释与优势
最新推荐文章于 2023-01-08 21:16:58 发布