我看了Jscex的介绍后,觉得它不能支持composition(下面会解释),想和你这个原作者再确认一下。烦请你有空的时候简单答复一下,谢
谢。
当把eval(Jscex.compile())用在一个function funcA上时,可以在那个funcA里用$await()来等另一个
async的function结束,再继续执行$await之后的语句。这样,在funcA里形成了一个block call的效果。
如果它支持composition的话,那意味着任何一个funcB去call funcA,都能体会到block call的效果。比如funcB里
列在funcA后面的语句都会停顿,直到$await()返回并导致funcA返回。
从Jscex的介绍来看,它并不能这样用。其实我认为,如果JavaScript语言本身不做扩充的话,基本上没有可能可以做到composable
block call。
Thanks,
Rex
1,Jscex函数调用普通函数:属于正常的JavaScript函数调用。
2,普通函数调用Jscex函数:普通函数只是trigger了Jscex函数,前者并不期望后者的返回值或完成后的执行效果,就象timer调用
callback一样。
3,Block call的效果仅限于Jscex函数内部,以及Jscex函数之间。
这样写的话,比较适合让我这样的程序员快速理解Jscex。
-Rex
On May 16, 10:38 pm, Jeffrey Zhao <je...@live.com> wrote:
> Sorry,第二段应该是"当然如果funcB **不是** 普通函数的话",即经过eval(Jscex.compile())的函数。
>
> 老赵 | Jeffrey Zhao
> Blog:http://blog.zhaojie.me/
> GitHub:http://github.com/JeffreyZhao/
>
>
>
>
>
>
>
> -----Original Message-----
> From: Jeffrey Zhao
> Sent: Thursday, May 17, 2012 1:36 PM
> To: Jscex User Groups
> Subject: Re: [jscex] Can Jscex be used in composition?
>
> 这种block call的效果只能在eval(Jscex.compile())过函数里使用,并且需要标记为$await,因此如果funcB是普通的函数的话,调用funcA是不会停顿的。
>
> 当然如果funcB是普通函数的话,$await(funcA())是没有任何问题的,比如这个例子,算法排序动画:
>
> http://files.zhaojie.me/jscex/samples/async/sorting-animations.html?q...
我刚好想问如何定制自己的await的对象,就看见你给的link了,明天我仔细读一下。