关于javascript:5个asyncawait最佳实践

41次阅读

共计 3885 个字符,预计需要花费 10 分钟才能阅读完成。

微信搜寻【大迁世界】, 我会第一工夫和你分享前端行业趋势,学习路径等等。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

快来收费体验 ChatGpt plus 版本的,咱们出的钱
体验地址:https://chat.waixingyun.cn/#/home
能够退出网站底部技术群,一起找 bug.

这篇文章介绍了应用 async/await 编写异步代码的 5 个最佳实际。文章中的第一个倡议是在所有异步代码中应用 async/await。这样做的益处有以下几点:首先,它使代码库放弃一致性。通过在所有异步代码中应用 async/await,你能够保持一致的代码编写和组织形式。此外,async/await 有助于进步代码可读性和易于保护。这是因为应用 async/await 能够使代码看起来更像同步代码,从而使其更容易了解和批改。总之,应用 async/await 是编写高效、易于保护的异步代码的要害。

上面是注释:

在这篇博客文章中,咱们将探讨async/await – 一种在各种编程语言中编写异步代码的弱小工具。

但首先,让咱们定义 async/await。简略来说,async/await 是一种编写异步代码的形式,它看起来和行为像同步代码。它容许咱们暂停函数的执行,期待 promise 解决,而后从来到的中央持续。

疾速示例:

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

留神 fetchresponse.json 的调用被包裹在 await 语句中。这使得函数在继续执行下一行之前暂停并期待 Promise 解决。

为什么 async/await 很重要

异步编程在当今高并发应用程序的世界中是必不可少的。无论是构建 Web 应用程序、挪动应用程序还是后端服务,都有可能须要在某个时候应用 async/await

改良的性能和可扩展性

async/await容许咱们编写非阻塞代码,这意味着应用程序能够解决更多并发申请,而不会遇到性能瓶颈。

加强用户体验

async/await 能够帮忙咱们创立更具响应性和交互性的应用程序,从而带来更好的用户体验。

更好的代码构造和可读性

async/await 使编写洁净有组织的代码更加容易,这在应用程序规模和复杂性减少时尤为重要。

进步生产力

通过简化异步编程,async/await 能够帮忙咱们在更短的工夫内实现更多的工作。

Tips1: 对于所有异步代码,请应用 async/await

应用 async/await 解决所有异步代码是个好主见,起因有几个。首先,它能够促成代码库的一致性。通过应用 async/await 解决所有异步代码,咱们将领有一种统一的编写和组织代码的形式。这使得其余开发人员更容易了解和保护你的代码库。

async/await还能够应用 try/catch 块轻松捕捉和处理错误。在解决 Promise 时,这尤其有用,因为如果没有适当的错误处理,Promise 可能很难调试。

最初,应用 async/await 在某些状况下能够进步性能,特地是与 await 关键字联合应用时。

以下是应用 async/await 解决所有异步代码的几个示例:

// Example 1: Using async/await with promises
async function getData() {
  try {const response = await fetch('https://example.com/data');
    const data = await response.json();
    return data;
  } catch (error) {console.error(error);
  }
}

// Example 2: Using async/await with async/await functions
async function processData(data) {
  try {const processedData = await transformData(data);
    await saveData(processedData);
  } catch (error) {console.error(error);
  }
}

Tips2: 在 try/catch 块中应用 await 处理错误

处理错误是编写牢靠且易于保护的代码的重要局部。在应用 async/await 时,最好在 try/catch 块内应用 await 关键字来正确处理错误。

上面是在 try/catch 块中应用 await 的示例:

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

在这个例子中,fetchresponse.json 的调用被蕴含在 await 语句中,位于 try 块内。如果产生谬误,它将被 catch 块捕捉并记录到控制台。

async/await 代码中,应用 try/catch 块内的 await 是处理错误的简略无效办法。

Tips3: 防止在 async/await 中应用 .then() 和 .catch()

JavaScript 中通常应用 .then().catch() 办法来解决 Promise。然而,当应用 async/await 时,通常最好防止应用 .then().catch(),而是应用 try/catch 块。

这是一个应用 try/catch 块而不是 .then() .catch() 的示例:

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

Tips4: 防止应用 async void 函数,除了事件处理程序。

Async void 函数是应用 async 关键字标记的函数。尽管在某些状况下能够应用异步无返回值函数,但通常应防止应用。示例:

async void DoWork() {// Async code here}

async void 函数可能会有问题,因为它们不返回值,这使得处理错误和确定函数何时实现变得艰难。
通常最好应用 async Taskasync Task<T> 函数。这些类型的函数容许咱们返回值并更轻松地处理错误。

这是一个异步工作函数的示例:

async Task DoWork() {// Async code here}

有一种状况能够应用 async void 函数:事件处理程序。async void 事件处理程序通常用于 UI 编程,以执行异步操作而不阻塞 UI 线程。

这是一个 async void 事件处理程序的示例:

private async void Button_Click(object sender, RoutedEventArgs e) {// Async code here}

Tips5: 不要在没有适当思考的状况下混合应用同步和异步代码

混合同步和异步代码可能会导致许多问题,包含性能问题、死锁和竞争条件。通常最好防止混合同步和异步代码,除非你有充沛的理由这样做。

有一些状况下,混合应用同步和异步代码是能够的:

  • 当咱们须要从同步办法调用异步办法时:在这种状况下,能够应用 await 关键字暂停同步办法并期待异步办法实现。
  • 当咱们须要从异步办法调用同步办法时:在这种状况下,能够应用 Task.Run() 办法在独自的线程上执行同步办法。

以下是从同步办法调用异步办法的示例:

public void DoWork() {
  // Sync code here
  await DoAsyncWork();
  // Sync code here
}

public async Task DoAsyncWork() {// Async code here}

以下是从异步办法调用同步办法的示例:

public async Task DoAsyncWork() {
  // Async code here
  await Task.Run(() => DoSyncWork());
  // Async code here
}

public void DoSyncWork() {// Sync code here}

除非有特定的起因,否则通常最好防止混合应用同步和异步代码。混合应用同步和异步代码可能会导致性能问题、死锁和竞争条件。然而,在某些状况下,有必要混合应用同步和异步代码,例如从同步办法调用异步办法或从异步办法调用同步办法。在混合应用同步和异步代码时,重要的是要正确处理错误并思考对性能和可维护性的潜在影响。

代码部署后可能存在的 BUG 没法实时晓得,预先为了解决这些 BUG,花了大量的工夫进行 log 调试,这边顺便给大家举荐一个好用的 BUG 监控工具 Fundebug。

交换

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

https://levelup.gitconnected.com/5-async-await-best-practices…

正文完
 0