async/await 可能会产生误导有些文章将 async/await 与 Promise 进行比较,并声称它是 javascript 异步编程发展的下一代,这一点个人觉得有点误导,个人认为 async/await 是一种改进,一个语法糖
有些文章将 async/await
与 Promise
进行比较,并声称它是 javascript 异步编程发展的下一代,这一点个人觉得有点误导,个人认为 async/await
是一种改进,一个语法糖,不会彻底改变编程风格。
本质上,异步函数仍然是 promises
,在正确使用异步函数之前,必须了解 promises
。
尽管 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) {
// 错误处理
}
};
async/await
非常强大,但也有一些注意事项。但是如果正确使用它们,还是有助于使代码高效并且高可读。
以上就是浅析js的异步函数async/await的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 浅析JS的异步函数async/await
本文链接: https://lsjlt.com/news/206877.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-24
2023-05-24
2023-05-24
2023-05-24
2023-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0