New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Question]: 异步 API 简化问题 #489
Comments
没有必然关系,不能依赖这个逻辑关系。 |
这里的api设计令人很困惑,令人难以理解:
按照通常的想法,api这样就足够了:
这样在多个地方返回错误显得凌乱,不清楚如果如下改动会有什么问题:
即使是同步的错误,也在异步的回调里面返回错误,这样错误处理的形式比较统一. 我认为还是接口设计的问题,err同步的的时候直接返回,异步的时候通过cb的参数返回 |
抱歉,之前太忙忘了回复了,事实上你可以不用纠结这种分配回收的时机问题,一开始引入 callback 就是为了这种场景,你可以直接在 callback 里回收资源。事实上,callback 理论上是永远都会执行的,否则的话,那就是很严重的 bug。 |
至于说 API 简化的问题,因为现在已经发布了 v2 版本了,API 变更这种属于 breaking changes,只能放到下一个 major 版本里考虑了。 不过至于异步 API 是否要同步返回 error 的问题,这里我还是认为需要返回,因为这个 error 它就是可能发生的同步的错误,是提交任务是否完全成功的反馈,而通过 callback 返回的 error 实际上是异步代码真正执行过程中发生的错误。这两种 error 还是解耦一下比较好。 |
这种返回方式是很迷惑的行为啊,就像我上面提的问题一样。
这是很让人迷惑的. |
Actions I've taken before I'm here
Questions with details
AsyncWritev([][]byte,cb)error 方法返回的error和cb的执行是否是互斥
如果AsyncWritev返回错误,是否内部的回调函数一定不会执行,如果asyncWritev不返回错误,内部的回调函数一定执行?
Code snippets (optional)
No response
The text was updated successfully, but these errors were encountered: