JS的异步函数async/await怎么使用
这篇“JS的异步函数async/await怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS的异步函数async/await怎么使用”文章吧。
成都创新互联是一家集网站建设,曲江企业网站建设,曲江品牌网站建设,网站定制,曲江网站建设报价,网络营销,网络优化,曲江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
ES7 引入的 async/await
是对 JavaScript 异步编程的一种改进,它提供了使用同步样式代码异步访问资源的选项,而不会阻塞主线程。但是,要很好地使用它有点棘手。在本文中,将从不同的角度探索 async/await
,并展示如何正确有效地使用它们。
async/await 好处
async/await
带来的最重要的好处就是同步编程风格,先来看一个例子。
// async/await
const getArticlesByAuthorWithAwait = async (authorId) => {
const articles = await articleModel.fetchAll();
return articles.filter((b) => b.authorId === authorId);
};
// promise
const getArticlesByAuthorWithPromise = (authorId) => {
return articleModel
.fetchAll()
.then((articles) => articles.filter((b) => b.authorId === authorId));
};
很明显,async/await
版本比 promise
版本更容易理解。如果忽略 await
关键字,代码看起来就像任何其他同步语言,如 Python
。
同时 async/await
有原生浏览器支持,截至目前,所有主流浏览器都已全面支持异步功能。
需要注意的是
async/await
在使用的过程中需要成对出现,如在函数里面要使用await
,就必须将函数定义为async
。
async/await 可能会产生误导
有些文章将 async/await
与 Promise
进行比较,并声称它是 JavaScript 异步编程发展的下一代,这一点个人觉得有点误导,个人认为 async/await
是一种改进,一个语法糖,不会彻底改变编程风格。
本质上,异步函数仍然是 promises
,在正确使用异步函数之前,必须了解 promises
。
Promise.any() 原理解析及使用指南
Promise.all() 原理解析及使用指南
Promise.race() 原理解析及使用指南
Promise.allSettled() 原理解析及使用指南
async/await 陷阱
尽管 await
可以使代码看起来像同步的,但请记住它们仍然是异步的,必须注意避免过于顺序化。
const getArticlesAndAuthor = async (authorId) => {
const articles = await articleModel.fetchAll();
const author = await authorModel.fetch(authorId);
return {
author,
articles: articles.filter((article) => article.authorId === authorId),
};
};
这段代码在逻辑上看起来是正确的,然而这是回产生误解。
await articleModel.fetchAll()
将等到fetchAll()
返回。然后
await authorModel.fetch(authorId)
将会被立即调用。
错误处理
使用 promise
,异步函数有两个可能的返回值:resolve
和 reject
,以用于正常情况使用 .then()
和异常情况使用.catch()
。然而,async/await
错误处理就不太好,需要使用 try...catch
来捕获异常。
const getArticlesByAuthorWithAwait = async (authorId) => {
try {
const articles = await articleModel.fetchAll();
return articles.filter((b) => b.authorId === authorId);
} catch (error) {
// 错误处理
}
};
以上就是关于“JS的异步函数async/await怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。
网页题目:JS的异步函数async/await怎么使用
URL分享:http://myzitong.com/article/iigcpj.html