掌握异步函数实现

简介: 同步调用需阻塞等待结果,性能较差;异步调用通过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 等待 → 优雅拿到结果/捕获错误

相关文章
|
网络协议 网络架构 Windows
【Windows】MCSM面板搭建Mycraft服务器,实现公网远程联机
【Windows】MCSM面板搭建Mycraft服务器,实现公网远程联机
715 0
|
存储 Linux Shell
Linux绝对路径和相对路径
在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。指明一个文件存放的位置,有 2 种方法,分别是使用绝对路径和相对路径。 我们知道,Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构 绝对路径一定是由根目录 / 开始写起。例如,使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin,测试代码如下: [root@localhost ~]# bin bash: bin: command not found <-- 没有找到 [
532 0
|
存储 缓存 JSON
微信小程序使用本地存储方法
微信小程序使用本地存储方法
643 1
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云服务器租用价格参考:2核4G/4核8G/8核16G价格与选型指南
阿里云服务器2核4G、4核8G、8核16G配置价格参考,目前,2核4G配置按量收费最低0.225元/小时,包年包月平均月价最低47.52元,按年购买u1实例2核4G5M带宽仅需199元且续费不涨价;4核8G配置按量收费最低降至0.45元/小时,包年包月平均月价最低159.84元;8核16G配置按量收费最低0.9元/小时,按月租用平均月价最低319.68元。云服务器实例规格和配置不同,收费标准与活动价格也不同,本文将为您介绍这三大配置的收费标准、活动价格及选型策略,以供选择参考。
|
Linux 网络安全 开发工具
Centos6.5安装并配置Telnet服务
该内容是一个关于如何安装配置Telnet服务的教程。首先,通过yum安装vim、xinetd、telnet和telnet-server。接着,修改/etc/xinetd.d/telnet配置文件,将disable改为no,并设置访问限制(如限定特定网段和时间)。关闭防火墙,重启服务。创建测试用户后,分别使用CentOS和Windows的Telnet客户端进行连接测试,显示成功,实验完成。
827 1
|
前端开发 JavaScript UED
window.open()用法详解
window.open()用法详解
1247 0
|
自然语言处理 Windows
推荐给大家5款小众无广告的软件
本文推荐了几款小众且无广告的实用软件:ProcessExplorer 是一款强大的系统进程管理工具;LanguageTool 则是多语言语法检查工具;燃精灵用于检测微信空号;GeekUninstaller 可深度清理卸载软件残留;Win10Apps 专为管理 Windows10 应用而设计。感兴趣的朋友可以自行搜索下载。
436 17
|
SQL 存储 关系型数据库
SQL中日期格式处理方法大全
整理所有的SQL中日期格式处理方法大全
|
vr&ar 图形学
【Unity 3D】VR飞机起飞喷火游戏案例实战(附源码和演示视频 超详细)
【Unity 3D】VR飞机起飞喷火游戏案例实战(附源码和演示视频 超详细)
636 0
|
存储
【源码共读】dotenv:从 .env 文件中读取环境变量
【源码共读】dotenv:从 .env 文件中读取环境变量
630 1

热门文章

最新文章