0

0

了解 JavaScript 中的异步代码:它是什么以及为什么它很重要

DDD

DDD

发布时间:2024-10-05 10:39:14

|

934人浏览过

|

来源于dev.to

转载

了解 javascript 中的异步代码:它是什么以及为什么它很重要

如果您使用 javascript 一段时间,您可能已经遇到过异步代码的概念。无论您是发出 api 请求、等待用户输入还是加载大型数据集,异步操作对于保持应用程序顺利运行都至关重要。

但是异步代码到底是什么?它与同步代码有何不同?在这篇文章中,我们将对其进行分解并探讨为什么异步编程是 javascript 中的游戏规则改变者。


什么是异步代码?

简单来说,异步代码允许任务在后台运行,而不会阻塞主执行流程。这意味着程序可以继续执行其他代码,而不是等待操作(例如网络请求)完成。

这种行为在 javascript 中尤其重要,因为它是单线程,这意味着主线程上一次只能运行一个任务。如果没有异步代码,长时间运行的操作将阻塞整个程序,导致应用程序无响应。

立即学习Java免费学习笔记(深入)”;


同步与异步代码:快速比较

让我们首先比较同步和异步代码在实践中的行为方式。

同步代码示例


function fetchdata() {
  const data = getdatafromserver(); // assume this takes 3 seconds
  console.log(data);
}

console.log('start');
fetchdata(); // blocks the code until data is fetched
console.log('end'); // this will only run after 3 seconds, when fetchdata completes


在这个同步示例中,一切都是一步一步发生的。当调用 fetchdata() 时,它会阻塞其余代码(包括 console.log('end')),直到获取数据为止,从而导致 3 秒的延迟。

异步代码示例

现在,让我们看一下用异步代码编写的同一示例。


async function fetchdata() {
  const data = await getdatafromserver(); // assume this takes 3 seconds
  console.log(data);
}

console.log('start');
fetchdata(); // this starts fetching data in the background
console.log('end'); // this runs immediately, without waiting for fetchdata to complete


这里,代码不会阻塞。 fetchdata() 开始运行,但代码没有等待获取数据,而是继续到 console.log('end')。每当获取操作完成时,数据就会被记录。

这就是异步代码的力量 - 即使在等待缓慢的操作完成时,它也能让应用程序保持运行和响应。


为什么使用异步代码?

异步代码在 javascript 中至关重要的原因有几个:

1。非阻塞操作

在处理网络请求、读取文件或与数据库交互等任务时,您不希望程序冻结。异步代码可确保长时间运行的操作不会阻塞应用程序的其余部分,从而使其保持响应能力。

2。提高性能

异步编程允许多个任务同时运行。例如,您可以同时从多个 api 获取数据,而无需等待每个请求按顺序完成。这种并发性提高了应用程序的整体性能。

3。处理缓慢的操作

腾讯交互翻译
腾讯交互翻译

腾讯AI Lab发布的一款AI辅助翻译产品

下载

任何需要未知时间的操作(例如从服务器获取数据)都是异步代码的良好候选者。通过不阻塞主线程,您的应用程序可以更有效地处理缓慢的操作。


javascript 中的异步模式

javascript 提供了多种处理异步操作的方法。我们来看看其中的一个。

异步/等待

async 和await 允许您编写外观和行为类似于同步代码的异步代码,从而提高可读性并使错误处理更加简单。


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


通过使用异步函数和等待 promise,您可以暂停函数的执行,直到 promise 解析,从而使异步代码更易于推理。


异步代码中的错误处理

处理异步代码中的错误可能很棘手。在同步代码中,通常使用 try...catch 捕获错误。然而,对于异步任务,错误可能不会立即发生,因此您需要不同的策略来处理它们。

承诺:

使用 .catch() 处理错误:


fetch('https://api.example.com')
  .then((response) => response.json())
  .then((data) => console.log(data))
  .catch((error) => console.error(error)); // error is handled here


使用异步/等待:

在异步函数中,您可以使用 try...catch 来处理错误,类似于在同步代码中的处理方式:


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


这使得异步代码中的错误处理更加直观。


结论

异步代码是 javascript 中的一个基本概念,尤其是在处理可能需要未知时间的任务时,例如网络请求或文件操作。通过了解异步代码的工作原理并使用 promises 和 async/await 等模式,您可以编写更高效、响应更快且可维护的应用程序。

要点:

  • 异步代码是非阻塞的,允许程序的其他部分在等待任务完成时继续运行。

  • javascript 提供了多种处理异步操作的方法,包括 async/await。

  • 了解如何处理异步代码中的错误对于编写健壮的应用程序至关重要。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

420

2023.08.08

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

541

2024.05.29

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

337

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

428

2023.10.12

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

386

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2111

2023.08.14

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号