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

JS的异步函数async/await怎么使用

文章页正文上

这篇“JS的异步函数async/await怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS的异步函数async/await怎么使用”文章吧。 ES7 引入的 async/await 是对 JavaScript 异步编程的一种改进,它提供了使用同步样式代码异步访问资源的选项,而不会阻塞主线程。但是,要很好地使用它有点棘手。在本文中,将从不同的角度探索 async/await,并展示如何正确有效地使用它们。async/await 带来的最重要的好处就是同步编程风格,先来看一个例子。

//async/await
constgetArticlesByAuthorWithAwait=async(authorId)=>{
constarticles=awaitarticleModel.fetchAll();
returnarticles.filter((b)=>b.authorId===authorId);
};

//promise
constgetArticlesByAuthorWithPromise=(authorId)=>{
returnarticleModel
.fetchAll()
.then((articles)=>articles.filter((b)=>b.authorId===authorId));
};

很明显,async/await 版本比 promise 版本更容易理解。如果忽略 await 关键字,代码看起来就像任何其他同步语言,如 Python。同时 async/await 有原生浏览器支持,截至目前,所有主流浏览器都已全面支持异步功能。需要注意的是 async/await 在使用的过程中需要成对出现,如在函数里面要使用 await ,就必须将函数定义为 async 。有些文章将 async/awaitPromise 进行比较,并声称它是 JavaScript 异步编程发展的免费云主机、域名下一代,这一点个人觉得有点误导,个人认为 async/await 是一种改进,一个语法糖,不会彻底改变编程风格。本质上,异步函数仍然是 promises,在正确使用异步函数之前,必须了解 promises。Promise.any() 原理解析及使用指南Promise.all() 原理解析及使用指南Promise.race() 原理解析及使用指南Promise.allSettled() 原理解析及使用指南尽管 await 可以使代码看起来像同步的,但请记住它们仍然是异步的,必须注意避免过于顺序化。

constgetArticlesAndAuthor=async(authorId)=>{
constarticles=awaitarticleModel.fetchAll();
constauthor=awaitauthorModel.fetch(authorId);
return{
author,
articles:articles.filter((article)=>article.authorId===authorId),
};
};

这段代码在逻辑上看起来是正确的,然而这是回产生误解。await articleModel.fetchAll() 将等到 fetchAll() 返回。然后 await authorModel.fetch(authorId) 将会被立即调用。使用 promise,异步函数有两个可能的返回值:resolvereject,以用于正常情况使用 .then() 和异常情况使用.catch()。然而,async/await 错误处理就不太好,需要使用 try...catch 来捕获异常。

constgetArticlesByAuthorWithAwait=async(authorId)=>{
try{
constarticles=awaitarticleModel.fetchAll();
returnarticles.filter((b)=>b.authorId===authorId);
}catch(error){
//错误处理
}
};

以上就是关于“JS的异步函数async/await怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注云技术行业资讯频道。

相关推荐: javascript字符串如何优化

这篇文章主要介绍“javascript字符串如何优化”,在日常操作中,相信很多人在javascript字符串如何优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javascript字符串如何优化”的疑惑有所帮助!接下来,请跟着…

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

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

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

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

登录

找回密码

注册