掌握异步函数实现

简介: 同步调用需阻塞等待结果,性能较差;异步调用通过Promise封装异步操作,结合async/await优雅获取结果。如getUser用Promise模拟延时查询,async函数中await等待完成,避免阻塞,提升效率,错误可捕获处理,代码更简洁流畅。

阻塞式的执行有其弊端,即执行完之后,必须等对方返回结果。这种方式的调用我们也称之为:同步调用。同步的优势在于实时性强、能立马得到结果,缺点就是性能较差,阻塞等待结果。
而异步调用,就很好的解决了这个问题,这里我们模拟一个:查询用户的等待异步执行的效果。
util.js
function sum(a, b) {
return a + b;
}

function getUser()
{
return new Promise(resolve => setTimeout(() => resolve('张三'), 1000))
}

module.exports = { sum, getUser };
然后定义一个新的调用函数,以便做接口测试
getUser.js
const { getUser } = require('./util');

// 使用 async/await 方式调用异步函数
async function fetchUser() {
try {
const user = await getUser();
console.log('获取到用户:', user);
} catch (error) {
console.error('获取用户失败:', error);
}
}

fetchUser();

解释一下这里的三个核心关键词的作用

Promise:给一步函数打包,统一返回结果。类似于点单之后拿到取餐号

async:声明一下我这个函数式有一步操作,给函数打个标签,内部有一个等待的异步操作

await:等取餐号叫到你拿到结果。只能在async修饰的函数里,等Promise完成,拿到 resolve的结果
异步操作(如数据库查询) → 用 Promise 封装 → 在 async 函数里用 await 等待 → 优雅拿到结果/捕获错误

相关文章
|
缓存
若依 this.$router.push 同地址不同参,页面不刷新问题
若依 this.$router.push 同地址不同参,页面不刷新问题
1873 0
|
Oracle 安全 关系型数据库
搭建 OpenLDAP 自助修改密码系统
让修改open ldap密码变得简单
1912 0
搭建 OpenLDAP 自助修改密码系统
ldap落地实战:svn集成ldap认证
上一篇文章我们介绍了LDAP的部署以及管理维护,那么如何接入LDAP实现账号统一认证呢?这篇文章将带你完成svn的接入验证 subversion集成openldap认证 系统环境:debian8.
2761 0
|
4月前
|
Docker 容器
nexus3 docker compose部署
本配置使用 Docker Compose 快速部署 Nexus Repository Manager 3.87.2。通过映射端口 8081、挂载持久化数据卷(nexus-data),并设置正确权限(UID/GID 200),确保服务稳定运行,支持制品仓库管理。
291 3
|
JSON Java 数据格式
一文彻底搞懂 @RequestBody 和 @RequestParam 的区别(附实战示例)
本文深入解析Spring Boot中@RequestBody和@RequestParam的区别,通过实战示例详解两者在数据来源、格式、使用场景及验证处理上的差异,帮助开发者正确选择参数绑定方式,提升开发效率与系统安全性。
1540 0
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
1239 6
|
前端开发 安全 测试技术
为什么我的“OSS”上传图片会失败?
在项目中添加上传头像功能时,起初通过阿里云OSS SDK快速实现并返回图片URL给前端。然而,mentor指出直接回传密钥存在安全风险,建议使用STS临时授权优化安全性。优化后,本地测试正常,但线上环境出现跨域问题。最终通过调整前端代码,使用`window.location.protocol`确保请求协议一致,解决了跨域问题。这一过程不仅提升了功能的健壮性,也让我深刻理解了安全性和兼容性的重要性。
980 8
|
前端开发 JavaScript UED
window.open()用法详解
window.open()用法详解
1452 0
|
搜索推荐 API UED
路由的query参数和params参数
理解并正确使用Query参数和Params参数,是构建清晰、高效Web应用的关键之一。开发者应根据实际应用场景灵活选择参数类型,从而优化用户体验和应用性能。
1359 6
|
监控 算法 Linux
探索Linux中的lz4命令:高效的数据压缩工具
**探索Linux中的LZ4工具:快速数据压缩。LZ4算法提供高速压缩与解压缩,适合实时数据处理。命令行工具如`lz4c`用于文件压缩(`lz4c file.txt compressed.lz4`)和解压缩(`lz4c -d compressed.lz4 decompressed.txt`)。特点是速度快、低内存占用,可选压缩级别。注意命令的实际形式取决于安装的实现,使用前应查阅文档。**

热门文章

最新文章