首页 > 其他分享 >10个必备的 async/await 工具函数

10个必备的 async/await 工具函数

时间:2023-12-22 15:57:38浏览次数:29  
标签:function 10 const 异步 await console async

| 当谈到异步编程时,async/await是JavaScript中常用的功能之一。下面是10个常用的await和async函数示例,以及对它们的代码用途的解析:

1.异步获取数据

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

 

该函数使用await关键字等待异步请求返回的数据,并将其解析为JSON格式。这样,我们可以在代码中以同步的方式处理数据,而无需使用回调函数。

2.异步执行多个任务

async function performTasks() {
  const task1 = doTask1();
  const task2 = doTask2();
  await Promise.all([task1, task2]);
  console.log('Tasks completed');
}

 

在这个例子中,我们使用await等待多个任务同时完成。Promise.all接收一个包含多个任务的数组,并返回一个新的Promise,直到所有任务都完成才会解析。

3.处理异步错误

async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    return data;
  } catch (error) {
    console.log('Error:', error);
    throw error;
  }
}

 

在这个示例中,我们使用try/catch块来捕获可能出现的异步错误。如果发生错误,它将被捕获并打印出来,然后被重新抛出。

4.顺序执行异步任务

async function performTasks() {
  await doTask1();
  await doTask2();
  console.log('All tasks completed');
}

 

这个函数按照顺序执行两个异步任务,并在两个任务都完成后打印一条消息。

5.异步循环

async function processItems(items) {
  for (const item of items) {
    await processItem(item);
  }
  console.log('All items processed');
}

 

在这个例子中,我们使用await在循环中处理每个项目。在处理完所有项目后,将打印一条消息。

6.延迟执行

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function delayedTask() {
  console.log('Task started');
  await delay(2000);
  console.log('Task completed');
}

 

delay函数返回一个Promise,经过指定的延迟时间后解析。在delayedTask函数中,我们使用await让任务在经过2秒的延迟后才继续执行。

7.条件异步执行

async function performTask(condition) {
  if (condition) {
    await doTask1();
  } else {
    await doTask2();
  }
  console.log('Task completed');
}

 

在这个示例中,我们使用条件语句来决定要执行的异步任务。根据条件的不同,将执行不同的任务,并在任务完成后打印一条消息。

8.并行执行异步任务

async function performTasks() {
  const [result1, result2] = await Promise.all([doTask1(), doTask2()]);
  console.log('Tasks completed:', result1, result2);
}

 

通过使用Promise.all和解构赋值,我们可以并行执行多个异步任务,并在它们都完成后获取结果。

9.处理多个并发请求

async function fetchData() {
  const [data1, data2] = await Promise.all([
    fetch('https://api.example.com/data1').then(response => response.json()),
    fetch('https://api.example.com/data2').then(response => response.json())
  ]);
  console.log('Data fetched:', data1, data2);
}

 

在这个示例中,我们使用Promise.all来并发请求多个数据源,并等待它们的响应。一旦所有数据都被解析为JSON格式,我们就可以对其进行处理。

10.链式异步操作

async function performTasks() {
  const result = await doTask1()
    .then(response => doTask2(response))
    .then(result2 => doTask3(result2));
  console.log('Tasks completed:', result);
}

 

在这个示例中,我们使用.then方法将多个异步任务链接在一起。doTask1完成后,它的结果将传递给doTask2,然后再将结果传递给doTask3。最终的结果将在最后的.then块中获取并打印出来。

这些常用的await和async函数示例展示了在异步编程中如何使用它们。通过使用async/await,我们可以以更具可读性和简洁性的方式处理异步操作,并使代码结构更清晰。

标签:function,10,const,异步,await,console,async
From: https://www.cnblogs.com/houxianzhou/p/17921756.html

相关文章

  • 2023年度盘点:全球排名前10的视频监控技术企业是哪些?
     视频监控技术的发展经历了从模拟到数字、网络化、高清、智能和云端的演进,使得监控系统越来越智能、高效和便捷,并在各种领域发挥着重要的作用,比如工地、工厂、安防、城市管理、智慧交通、家居安防等。随着视频监控技术的不断进步,视频监控市场也逐渐成型,今天我们来介绍下全......
  • win10安装git fatal: open /dev/null or dup failed: No such file or directory错误
    https://files.cnblogs.com/files/netlock/null.zip?t=1703226893&download=true文件地址解决方法:1.C:\Windows\System32\drivers\null.sys这个文件损坏,可以从网上下载win7、win10对应的null.sys文件,然后进行替换。由于我是win10的电脑,提供链接。百度网盘链接:https://pan.baid......
  • 10个Python脚本自动化日常任务
    在这个自动化时代,我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。那么在本文中,我将向您介绍10个Python自动化脚本,以使你的工作更加自动化,生活更加轻松。因此,没有更多的重复任务将这篇文章放在您的列表中,让我们开始......
  • 动态给div赋值高,使页面高度100%
    import{ref,onMounted,onUnmounted,computed,nextTick}from'vue'constboxRef=ref()constsearchBoxRef=ref()consttableBoxHeight=ref(0)constcomputedTableBoxHeight=()=>{constsearchBoxHeight=searchBoxRef.value.clientHe......
  • 5个Windows10关闭自动更新的好方法!
    通常,用户会定期对电脑系统进行升级,以达到优化设备的目的。但近期似乎存在大量用户在Windows10更新后遭遇兼容性等各种问题。因此,关闭Windows10的自动更新功能显得尤为重要,所以本文将向你介绍5个Windows10关闭自动更新的方法。Windows10关闭自动更新的方法!接下来本文将向......
  • 【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序)
    [NOIP2007普及组]奖学金题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前名学生发奖学金。期末,每个学生都有门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规......
  • 初中英语优秀范文100篇-034My Room-我的房间
    PDF格式公众号回复关键字:SHCZFW034记忆树1Weliveinathree-roomflat.翻译我们住在一个三居室的公寓。简化记忆公寓句子结构主语(We):表示句子中的主体,即说话者本人和听话者。谓语(live):表示主体所进行的动作或状态,这里是“居住”的意思。状语(inathree-roomflat):......
  • 从零开始构建报警中心:part10 接入统一登录
    前文使用flask-login实现了用户登入登出,在实际使用中过于简单,这里引入统一登录。关于统一登录可以看一下早前的这篇文档:一个简单的SSO统一登录设计对于接入统一登录可以参考一下的时序图:根据这个时序图,要接入已有的SSO,需要对现有系统进行一些修改:未登录情况下,在login视图中添加从co......
  • Windows10 卸载WSL Ubuntu (解决Docker Desktop 报错问题)
    首先在“程序”里面卸载“WindowsSubsystemforLinuxUpdate”然后使用命令行卸载已安装的子系统1、查看当前环境安装的wslwsl--list2、注销(卸载)当前安装的Linux的Windows子系统wsl--unregisterUbuntu3、卸载成功,查看当前安装的Linux的Windows子系统wsl--list4......
  • win10新建文本快捷键
    由于非常喜欢使用快捷键在注册表做如下设置后计算机\HKEY_CLASSES_ROOT\LocalSettings\MuiCache\193\AAF68885\在这个键的子项中,有一个数据为"文本文档",将其改为"(&T文本文档)",可以右键空白处然后W-T 可以很快速新建一个文本文件,但windows不知道在什么,时不时更会更新,然后......