分享更有价值
被信任是一种快乐

await是es7的吗

文章页正文上

本文小编为大家详细介绍“await是es7的吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“await是es7的吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 await是es7。async和await是ES7中新增内容,是对于异步操作的解决方案。async顾名思义是“异步”的意思,async用于声明一个函数是异步的;而await从字面意思上是“等待”的意思,就是用于等待异步完成。async和await有一个严格规定,两者都离不开对方,且await只能写在async函数中。async和await是ES7中新增内容,对于异步操作的解决方案,它是Generator函数的语法糖。async|await是编写异步的新方法,之前ES6中用的是promise。async|await是建立在promise基础之上的新写法。async|await也是非阻塞的。async顾名思义是“异步”的意思,async用于声明一个函数是异步的。而await从字面意思上是“等待”的意思,就是用于等待异步完成。async和await它们两有一个严格规定,两者都离不开对方,但是,await只能写在async函数中。async如何处理返回值
async的返回值是一个promise对象,也就是说它会直接通过promise中的方法将返回值封装成一个promise对象。

asyncfunctionAsync(){
return"helloworld";
}
constresult=Async();
console.log(result);


从结果看来async函数返回的是promise对象,它会直接将返回值封装成一个promise对象。如果没有返回值

asyncfunctionAsync(){
console.log("helloworld");
}
letresult1=Async();
console.log(result1);

从结果看来async函数返回的是promise对象,当时值是undefined。因此。在没有await的情况下,返回一个 promise 对象,并不会阻塞后面的语句。但是await是在等待什么呢

functiontime(s){
returnnewPromise((resolve)=>{
setTimeout(resolve,ms);
});
}
asyncfunctionAsync(value,s){
awaittime(s);
console.log(value);
}
Async('helloworld',50);

指定 50 毫秒以后,输出hello world。一般用await去等待async函数完成,await 等待的是一个表达式,表达式的计算结果是 promise 对象或其它值,因此,await后面实际可以接收普通函数调用或直接量。
如果await等到的不是promise对象,表达式运算结果就是它等到的东西。
如果是promise对象,await会阻塞后面的代码,等promise对象处理成功,得到的值为await表达式的运算结果。虽然await阻塞了,但await在async中,async不会阻塞,它内部所有的阻塞都被封装在一个promise对象中异步执行。任何一个await语句后面的 Promise 对象变为reject状态,那么整个async函数都会中断执行。

asyncfunctionAsync(){
awaitPromise.reject('出错了');
awaitPromise.resolve('helloworld');//不会执行
}
letresult1=Async();
console.log(result1);


从结果看来,第二个await语句是不会执行的,因为第一个await语句状态变成了reject。如果await后面的异步操作出错,那么async函数返回的 promise 对象被reject了。

leta;
asyncfunctionf(){
awaitPromise.reject('error');
a=await1;//await没有执行
}
f().then(v=>console.log(a));

从结果看来,当async函数中的await只要有一个出现reject状态,则后面的await都不会执行。一般解决办法用try…catch。

//正确的写法
leta;
asyncfunctionf(){
try{
awaitPromise.reject('error')
}catch(error){
console.log(error);
}
a=await1;
returna;
}

f().then(v=>console.log(a));//1

从结果看来,这样就很好的解决了这个问题,当有多个await不会执行时,可以都放在try…catch中。async|await的优点:async|await解决了回调地狱的问题async|await支持并发执行async|await对异步处理更加简洁async|await免费云主机、域名可以在try…catch中捕获错误读到这里,这篇“await是es7的吗”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注云技术行业资讯频道。

相关推荐: 大疆行业应用旗舰无人机官宣:5月18日发布

大疆创新官方宣布,将于5月18日21点发布大疆行业应用旗舰新品无人机,口号为满载实力,一往无前”。 与消费级无人机不同,行业无人机会根据行业需求专门定制,在旋翼、相机、多光谱、变焦、无人值守等方面加强,以便适用于行业需求。 比如DJI Mavic 3行业系列中…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册