async/await理解

本文深入探讨了异步编程的概念,解释了异步与Await在JavaScript中的应用,包括它们的基本原理、如何使用以及异步函数的串行和并行执行方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异步顾名思义是“异步”的意思,异步用于声明一个函数是异步的。而AWAIT从字面意思上是“等待”的意思,就是用于等待异步完成。并且AWAIT只能在异步中函数使用通常异步,待机都是跟随无极一起使用的。为什么这么说呢?因为异步返回的都是一个承诺对象同时异步适用于任何类型的函数上。这样的AWAIT得到的就是一个承诺对象(如果不是无极对象的话那异步返回的是什么就是什么); await得到Promise对象之后就等待Promise接下来的解析或者拒绝。来看一段简单的代码:复制代码1 async function testSync(){2 const response = await new Promise(resolve => {3 setTimeout(()=> {4 resolve(“async await test ...”); 5},1000); 6}); 7 console.log(响应); 8} 9 testSync(); // async await test ...复制代码就这样一个简单的async,await异步就完成了。使用异步,等待完成异步操作代码可读与写法上更像是同步的,也更容易让人理解.async,待机串行并行处理

串行:等待前面一个await执行后接着执行下一个await,以此类推复制代码1 async function asyncAwaitFn(str){2 return await new Promise((resolve,reject)=> {3 setTimeout(()=> { 4 resolve(str)5},1000); 6})7} 8 9 const serialFn = async()=> {//串行执行10 11 console.time('serialFn')12 console.log(等待asyncAwaitFn('string 1')); 13 console.log(等待asyncAwaitFn('string 2')); 14 console.timeEnd('serialFn')15} 16 17 serialFn(); 复制代码可以看到两个AWAIT串行执行的总耗时为两千多毫秒并行:将多个承诺直接发起请求(先执行异步所在函数),然后再进行AWAIT操作复制代码

1 async function asyncAwaitFn(str){2 return await new Promise((resolve,reject)=> {3 setTimeout(()=> {4 resolve(str)5},1000); 6})7} 8 const parallel = async()=> {//并行执行9 console.time('parallel')10 const parallelOne = asyncAwaitFn('string 1'); 11 const parallelTwo = asyncAwaitFn('string 2')12 13 //直接打印14 console.log(等待parallelOne)15 console.log(等待parallelTwo)16 17 console.timeEnd('parallel'3 const errRes = await new Promise( (解决,拒绝)=> {4 setTimeout(()=> {5拒绝(“http错误......”); 6},1000); 7); 8 //平常我们也可以在等待请求成功后通过判断当前状态是不是200来判断请求是否成功9 // console.log(errRes.status,errRes.statusText); 10} catch(err){11 console.log(err); 12} 13} 14 catchErr(); // http错误...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值