注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

Justin Donaldson博士点评几大Haxe异步框架  

2013-02-24 02:39:11|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

译者按:Justin Donaldson博士是牙买加卫生部的技术顾问,BigML公司的创始人。他最近发布了一个开源库Promhx,通常用来控制node.js等异步流程。

接着就有人问:您的大作和haxe-continuationhx-async相比如何?(注:haxe-continuation是鄙人拙作,在Haxe+Node.js+continuation打造高性能高开发效率服务器架构中介绍过)

Justin Donaldson博士做出了以下答复:


(译文)

我前不久刚看过这两个库,haxe-continuation的英姿深深地映在了我的脑海中。

我用hx-async时举步维艰。这玩意儿各种API和语法都不少,闪瞎了我的狗眼也没搞明白。要我说,hx-async给人的第一印象就是没教养。

haxe-continuation似乎是用非阻塞方式假冒Future……这“奇技淫巧”倒真是颇为优雅。haxe-continuation对宏的用法算得上一部严谨的教科书了。你敢信吗?它竟用宏完全改写了整个函数,这才让你产生阻塞调用的幻觉。

它在许多细节上都处理得不错,比如它支持从异步函数中返回多个返回值。你要是接收返回值的变量名不够,它居然还会给出正确的编译错误信息:

https://github.com/Atry/haxe-continuation/blob/master/tests/TestNode.hx

它创建多个线程的方式也颇为精彩。一句简单的Lambda.iter().async(),就创建了5个线程,之后的代码像单线程一样正常编写即可。这招简直绝顶聪明,代码可读性比典型的CPS风格代码强太多了。

唯一的缺点?大量使用宏重排了整个函数。建议心理承受能力不足的人别去读它生成的JavaScript代码。这种代码调试时不好跟踪,幸亏浏览器的SourceMap功能弥补了这个缺陷。此外……@cps函数的返回值必须是Void类型,因为这些函数通常只被@cps代码调用。不过,这些做法完全无可厚非。

Promise是一种包装异步返回数据的方式,尤其用于收集多个异步调用后返回同一执行流的情况。这算是和haxe-continuation相比的主要优点吧。但即便如此,依我看,有了haxe-continuation,再也不需要去实现什么Promise或Deferred了……这东西真真有趣。


(原文:https://plus.google.com/112651821425677274147/posts/PuTmizEhEr4

  评论这张
 
阅读(1255)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018