Skip to article frontmatterSkip to article content

我们之所以很少自己实现协程库, 是因为实现后往往发现, 只不过是做了一版不够完善的async特性. 那么, 什么是async呢?

Async是语言为支持异步IO而设计的一套协程调度机制, 目标是提高单线程IO效率和吞吐量. 相比原始协程, 它更符合人体工学.

Async 提供的新特性

async 在语言中引入两个核心概念:

javascript
python
rust
1
2
3
4
5
6
async function fetchData(url) {
  const response = await fetch(url);
  const data = await response.text();
  console.log(data);
}
fetchData('https://example.com');

在使用上

async特性易于理解, 使用时无需深入了解其底层原理. 不同语言实现细节不同, 此处不再展开.

什么时候使用 async

适用于IO密集且性能关键的场景, 如大量文件读写, 大量 URL 请求, 大量 API 调用, 数据库访问等.

如何实现自己的 async Function?

语言或标准库通常内置各种async function, 如文件读写, 网络请求等. 开发者只需通过await调用这些async function, 组合实现自己的async function即可.

开发时, 建议先实现同步版本并进行性能测试, 只有在必要时才改写为async版本. 这样更易于调试, 避免陷入过早优化的陷阱.