async&await的作用及区别。

async&await是JavaScript Es7发布的新语法,据说是解决异步编程的终极解决方案。

async 是“异步”的意思,而 await 是等待的意思,await 用于等待一个异步任务执行完成的结果。

async/await 是一种编写异步代码的新方法(以前是采用回调和 promise)。

  1. async/await 是建立在 promise 的基础上。
  2. async/await 像 promise 一样,也是非阻塞的。
  3. async/await 让异步代码看起来、表现起来更像同步代码。
     

async

  • 可以作用在任何方法前, 返回值是一个Promise对象(回调函数也可以使用async)
  • 函数内部return的返回值, 会成为then回调函数的参数
  • async作用的方法,如果内部出现报错,可以被promise的catch方法捕获
  • 常规使用,一般都会通过try catch进行有可能报错的代码处理
    let fn2 = async ()=>{
        return 1
    }
    // console.log(fn2());//使用async之后返回Promise对象
    fn2().then(res=>{
        console.log("fn2.then==>",res)
    })

 从以上代码可以看到,执行结果一样。Asnyc修饰的函数的返回值会作为resolve对应函数的参数。

await

  •  await只能作用在async修饰的方法中,不能单独使用,如果使错:await is only valid in async functions and the top level bodies of modules
  • await是会阻塞代码执行
  • 正常情况 await后面跟着一个Promise对象; 返回的是Promise对象的成功后结果; 如果是一个普通值,那么会直接返回这个值
  •  reject的返回 await没有办法进行捕获(使用try catch进行捕获)
   let p1 = ()=>{
            return new Promise((resolve, reject)=>{
                setTimeout(()=>{
                    resolve("hello world")
                },3000)
            })
        }
        async function fn3(){
            console.time("step3_1");
            let res = await p1();
            //使用await之后 像是在写同步代码一样,只有等P1得到结果才会继续向下执行
            //await是会阻塞代码执行
            console.timeEnd("step3_1");
        }
        fn3();

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值