一次性搞定Async和Await

79 阅读3分钟

首先什么是Async和Await

什么.jfif

Async:

async的意思是“异步”,so,显而易见这是解决异步问题的一个关键字,那我们就简单的构建一个async方法

async function helloAsync(){
    return "hello";
  }
  console.log(hello())  //[object Promise]

声明async方式比较简单,只需要在函数的前面添加一个 async 我们发现它并没有返回“hello”,而是返回一个Promise对象返回(关于promise我会在下篇文章写出,请耐心等待)。很多人就有疑惑,那么这里只不过是封装个promise返回,我们不能直接看到,那么我们将请--->Await出山

async特点(两点):

  1. async创建的函数其返回值会自动封装到一个Promise中返回
  2. async创建的函数中可以使用await关键字

Await

await的意思是“等待”的意思,那么它到底在等待什么呢? 其实他在等待表达式执行后的结果 我们在使用Await时不能单独拿出来用,因为它与async是一对亲兄弟一样要搭配在一起,才能发挥最大的功能,但是我们也必须要注意await的使用,await并不会改变异步的本质,他只是改变了异步的调用方式,让我们像写同步代码一样顺畅,而不是将异步变为同步,那么在哪里使用上await代码呢?

  1. async关键字创建的函数
  2. JS模块的最外层作用域

使用Promise的方式

function testAwait(){
   return new Promise((resolve) => {
          setTimeout(function(){
          	console.log("testAwait");
          	resolve();
          }, 1000);
       });
  	}
  async function hello(){
       //在这里等待testAwait的打印
  	await testAwait();
  	console.log("hello");
  }
  //调用
  hello()

在这里我们使用了一个定时器,即在1秒后我们将打印testAwait helloAsync()方法中,await testAwait(),表示将阻塞这里,等待testAwait的异步执行结果后再执行;所以说swait有个重要的作用的就是阻塞主函数的执行,直到后面的Promise函数返回结果。

采用tcy...catch的方式

(async ()=>{
    try{
        let result = await fn2()
        result = await fn3(result)
        result = await fn4(result)
        result = await fn5(result)
        console.log(result)
    }catch(e){
        console.log("出错了")
    }
})()

学习完了await我们也就理解了,async的第二个作用,相较于简化异步函数的创建能够使用await才是async函数的最大作用,await会相对于新手来说比较难以理解,但是你只要记得await在执行异步时会暂停执行,而等待await代码返回结果后再继续执行函数

Async和Await对于我们来说只是一种执行异步的一种方式,我们当然可以采用其他的方式来执行异步,所以只要能跑就行。如同俗话说:“管你是什么猫,抓到老鼠就是好猫”,当然放在今天就不一定了,但是我们要有这种专心。

好了,我们就聊到这里吧!喜欢这篇文章请给我点个,谢谢各位观众老爷们!

求赞.jpeg

刚才人多...在这我就给你跪下了....