async和await的使用

async 是“异步”的简写,而 await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
简单理解: async 是让方法变成异步。
await 是等待异步方法执行完成

详细说明:
async 是让方法变成异步,在终端里用 node 执行这段代码,你会发现输出了 Promise {‘Hello async’ },这时候会发现它返回的是 Promise

async function testAsync(){
 return 'Hello async';
  }
const result = testAsync();
 console.log(result);
 //运行结果
// PS E:\code\BXShop> node async.js 
 //Promise { 'Hello async' }

await 在等待 async 方法执行完毕,其实 await 等待的只是一个表达式,这个表达式在官方 文档里说的是 Promise 对象,但是它也可以接受普通值。 注意:await 必须在 async 方法中 才可以使用因为 await 访问本身就会造成程序停止堵塞,所以必须在异步方法中才可以使用。

/*
//async 是让方法变成异步
普通方法


 function getData(){

 return '这是一个数据';
 }

 console.log(getData());  //这是一个数据
* */



/*
async 是让方法变成异步


 async function getData(){

 return '这是一个数据';
 }

 console.log(getData());  //Promise { '这是一个数据' }


* */




/*如何获取async 异步方法里面的数据的第一种方法
 async function getData(){

     return '这是一个数据';
 }

 var p=getData();
 p.then((data)=>{
     console.log(data);
 })

* */


//await 是等待异步方法执行完成,可以获取异步方法里面的数据,但是必须得用在异步方法里面

/*await 错误的用法
 async function getData(){

    return '这是一个数据';
 }

 var d=await getData();
 console.log(d);  //await is only valid in async function

* */


//await 是等待异步方法执行完成,可以获取异步方法里面的数据,但是必须得用在异步方法里面

/*
 async function getData(){

    return '这是一个数据';
 }

 async function test(){

    var d=await getData();

    console.log(d);
 }
 test();

* */


//await 阻塞的功能 ,把异步改成一个同步


//async function getData(){
//    console.log(2);
//    return '这是一个数据';
//}
//async function test(){
//
//    console.log(1);
//    var d=await getData();
//    console.log(d);
//    console.log(3);
//}
//test();  //1  2  3





//async 定义的方法返回的是 Promise对象。



/*
 function getData(){

    return new Promise((resolve,reject)=>{
          setTimeout(()=>{
                 var username='张三';
                 resolve(username);


          },1000)
     })
 }

 var p=getData();
 p.then(function(d){      //异步的方式获取
        console.log(d);

 })

* */


function getData(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            var username='张三';
            resolve(username);

        },1000)
    })
}
async function test(){

    var data=await getData();
    console.log(data);
}

test();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值