在编写异步 API 时,我可以使用任何有用的习惯用法吗?我想对某些东西进行标准化,因为我似乎在整个过程中使用了几种不同的风格。让异步代码变得简单似乎很难;我想这是因为异步操作绝非如此。
在最基本的层面上,API 的用户必须能够:
- 在数据可用时将数据推送给他们
- 检查异步操作的状态
- 收到发生错误的通知
- 等待完成(将异步操作转换为同步操作)
我的类支持几种异步操作。我一直在围绕它的类中放置一些状态/错误回调,但是该类正被许多附带字段所困扰,并且变得太大。我很好奇是否有人使用过他们发现组织良好的异步 API。我查看了 .NET 的 Begin/EndAsyncOperation + AsyncResult 设计,以及 Java 中的一些类(例如 Future)。
这是用 Python 编写的,因此它仍然非常灵活。有一个警告:其中一些异步操作被编组到远程机器并在那里执行。因此,并非每个操作都必须在单独的线程中执行。