首先什么是Async和Await
Async:
async的意思是“异步”,so,显而易见这是解决异步问题的一个关键字,那我们就简单的构建一个async方法
async function helloAsync(){
return "hello";
}
console.log(hello()) //[object Promise]
声明async方式比较简单,只需要在函数的前面添加一个 async 我们发现它并没有返回“hello”,而是返回一个Promise对象返回(关于promise我会在下篇文章写出,请耐心等待)。很多人就有疑惑,那么这里只不过是封装个promise返回,我们不能直接看到,那么我们将请--->Await出山
async特点(两点):
- async创建的函数其返回值会自动封装到一个Promise中返回
- async创建的函数中可以使用await关键字
Await
await的意思是“等待”的意思,那么它到底在等待什么呢? 其实他在等待表达式执行后的结果 我们在使用Await时不能单独拿出来用,因为它与async是一对亲兄弟一样要搭配在一起,才能发挥最大的功能,但是我们也必须要注意await的使用,await并不会改变异步的本质,他只是改变了异步的调用方式,让我们像写同步代码一样顺畅,而不是将异步变为同步,那么在哪里使用上await代码呢?
- async关键字创建的函数
- 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对于我们来说只是一种执行异步的一种方式,我们当然可以采用其他的方式来执行异步,所以只要能跑就行。如同俗话说:“管你是什么猫,抓到老鼠就是好猫”,当然放在今天就不一定了,但是我们要有这种专心。
好了,我们就聊到这里吧!喜欢这篇文章请给我点个赞,谢谢各位观众老爷们!
刚才人多...在这我就给你跪下了....