浅谈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函数返回了失败的promiseawiat获取不到失败结果 需要用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)