浅谈async await用法
【摘要】 前言上几篇文章更完了promise 今天一起来看看async await异步操作的使用与理解 async await理解async和await用更简洁的方式写出基于promise的异步行为asyncawait函数的返回值为promise对象右侧的表达式一般为promise对象或其他值promise的结果有async返回值决定如果是promise对象 返回成功值否则将表达式的值返回async...
前言
上几篇文章更完了promise 今天一起来看看async await异步操作的使用与理解
async await理解
async和await用更简洁的方式写出基于promise的异步行为
async | await |
---|---|
函数的返回值为promise对象 | 右侧的表达式一般为promise对象或其他值 |
promise的结果有async返回值决定 | 如果是promise对象 返回成功值否则将表达式的值返回 |
async函数中可以没有await | await必须写在async函数中 |
* | 如果await的promise失败就会抛出异常 需要通过try catch捕获异常 |
async中不存在await则同步执行 | 存在await才异步执行 |
async 函数成功 使用示例
创建一个成功的函数 返回为1的结果
执行函数并打印 返回值为promise对象
const fn = async () => {
return 1
}
/*
fn 函数等价于
const fn = async () => {
return Promise.resolve(1)
}
*/
const result = fn()
console.log(result)
async 函数失败 使用示例
创建一个失败函数 向浏览器抛出错误为3
获取变量为result的promise对象,用链式调用获取错误
const fn = async () => {
throw 3
}
/*
fn 函数等价于
const fn = async () => {
return Promise.reject(3)
}
*/
const result = fn()
result.then(
value => { console.log('onResolved', value) },
reason => { console.log('onRjected', reason) }
)
await 右侧表达式为成功promise示例
fn函数返回了成功promise
使用await可以避免使用then直接获取成功值
const fn = () => {
return Promise.resolve(1)
}
const fn2 = async () => {
let value = await fn()
console.log(value)
}
fn2()
awiat 右侧为失败promise示例
fn函数返回了失败的promise
awiat获取不到失败结果 需要用try catch语法获取
const fn = () => {
return Promise.reject(1)
}
const fn2 = async () => {
try {
let value = await fn()
} catch (error) {
console.log(error)
}
}
fn2()
await 右侧不是promise示例
得到的结果就是返回的值
const fn = () => {
return 6
}
const fn2 = async () => {
let value = await fn()
console.log(value)
}
fn2()
使用进阶
以下这段代码value值为6
注意:fn()此时的结果为promise对象 await直接获取成功结果
async函数返回的一定是一个promise对象
const fn = async () => {
return 6
}
const fn2 = async () => {
let value = await fn()
console.log(value)
}
fn2()
总结
async与await一般搭配使用 async函数里可以没有await
今日份小知识get~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)