async的应用

1.认识async

<!--
    Created by wangyang on 2019-05-22.
    itwangyang@gmail.com
    http://www.itwangyang.xyz
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <title>Title</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <!--所有的IE都起作用:-->
  <!--[if IE]>  <link rel="stylesheet" type="text/css" href="all-ie-only.css/> <![endif]-->

</head>
<body>



<script>
  /**
   * async
   * async其实是一个promise的语法糖
   */

//promise实现
  function f1() {
    return new Promise(resolve => {
      setTimeout(()=>{
        console.log("hello");
        resolve("成功");
      },1000)
    })
  }
/*
  f1().then(res=>{
    console.log("第二步");
  })
*/


//  async的实现
  (async function () {
    //await是表示这行代码是一个异步操作
    //下面的代码会在这个异步操作之后执行
    //  -->这里的异步操作执行完毕其实就是reslove
    await f1();
    console.log("第二步");

    await f1();

    console.log("第三步");
  })();
  console.log("hello1111");

</script>
</body>
</html>

2.async处理返回值

<!--
    Created by wangyang on 2019-05-22.
    itwangyang@gmail.com
    http://www.itwangyang.xyz
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <title>Title</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <!--所有的IE都起作用:-->
  <!--[if IE]>  <link rel="stylesheet" type="text/css" href="all-ie-only.css/> <![endif]-->

</head>
<body>



<script>
 function f() {
  return  new Promise(resolve => {
     setTimeout(()=>{
       resolve("您好");
     },1000)
   })
 }

 (async function() {
   let res = await f();
   console.log(res);

   let res1 = await f();
   console.log(res1);
 })();


 var o1={
   say:async ()=>{
     console.log('say方法:');

     const res = await q();

     console.log(res);
   },
   run:async function(){
     console.log('run方法');

     const res = await q();

     console.log(res);
   }
 };

 //需求,先执行完毕say,再执行run
 var fn=async function(){
   await o1.say();

   await o1.run();
 };
 fn();



</script>
</body>
</html>

3.async错误处理

<!--
    Created by wangyang on 2019-05-22.
    itwangyang@gmail.com
    http://www.itwangyang.xyz
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <title>Title</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <!--所有的IE都起作用:-->
  <!--[if IE]>  <link rel="stylesheet" type="text/css" href="all-ie-only.css/> <![endif]-->

<body>
    
</body>
<script>
    function q(){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                reject("你好");
            },100)
        })
    }

    (async function(){
        try{
            let res = await q();
            console.log(res);
        }catch(e){
            console.log(e);
        }
    })()
</script>
</html>

注意:

await可以执行异步操作,但是await必须在async函数内执行

await操作可以有返回值,这个返回值表示promise操作成功的返回值

如果await里面执行的异步操作发生了reject,或者发生了错误,那么只能使用try...catch语法来进行错误处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值