精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-01
不要掉人胃口啦,早点放出来,让大家一起研究研究,呵呵
|
|
返回顶楼 | |
发表时间:2007-06-01
看来不是关注于XHR部分,而是某些计算方面的。不过就许多项目来说,除了XHR和界面事件回调,基本都是同步的了,类似future模式作用有多大呢
|
|
返回顶楼 | |
发表时间:2007-06-01
birdjavaeye 写道 看来不是关注于XHR部分,而是某些计算方面的。不过就许多项目来说,除了XHR和界面事件回调,基本都是同步的了,类似future模式作用有多大呢
非也,本身许多东西是同步的,但是它依赖异步的结果,导致本来可同步执行的内容必须callback。请考虑我前述的例子。 |
|
返回顶楼 | |
发表时间:2007-06-01
|
|
返回顶楼 | |
发表时间:2007-06-01
jindw 写道
是有一点类似。不过: 1. 我主要从javascript本身出发,并不限于remote调用的异步,也可以针对setTimeout之类的异步。 2. 针对result的join,我原来确实也是有类似的做法,即有若干个task,然后可以顺序化或并行化,有点像排一个flow。但是后来我觉得这样还是不够,程序员还是要被迫使用一种新的概念和编程模式。我希望程序员能像处理一般的程序那样——即“异步”只是背后发生的,对于程序员可以透明。程序员写出的是很easy的程序,但是通过某种方式,Future模式能透明的把它转换为实际上以异步方式执行。 |
|
返回顶楼 | |
发表时间:2007-06-01
hax 写道 非也,本身许多东西是同步的,但是它依赖异步的结果,导致本来可同步执行的内容必须callback。请考虑我前述的例子。 既然许多东西都是同步的,那依赖哪些异步的东西呢?主要的也就是XmlHttp和event handler,设计上很容易将他们和同步的分开 |
|
返回顶楼 | |
发表时间:2007-06-01
hax 写道 jindw 写道
是有一点类似。不过: 1. 我主要从javascript本身出发,并不限于remote调用的异步,也可以针对setTimeout之类的异步。 2. 针对result的join,我原来确实也是有类似的做法,即有若干个task,然后可以顺序化或并行化,有点像排一个flow。但是后来我觉得这样还是不够,程序员还是要被迫使用一种新的概念和编程模式。我希望程序员能像处理一般的程序那样——即“异步”只是背后发生的,对于程序员可以透明。程序员写出的是很easy的程序,但是通过某种方式,Future模式能透明的把它转换为实际上以异步方式执行。 这样的代码 function go() { a(); b(x, y, z, go2); // 给回调传结果的函数 } function go2(result) { c(result); } 要能不改变b函数,而直接写成类似 function go() { a(); var result = b(); c(result); } 同时基于js单线程特性、用户体验、跨浏览器这些前提,基本上只有一种方法,就是 自动 按照程序员写的后面那种代码 生成 前面那种代码。 程序员这么写: function go() { a(); var result = $async(b, x, y, z, $callback); c(result); } 然后 go = $sync(go);就自动生成代码 function go() { a(); b(x, y, z, $temp1); } function $temp1(result) { c(result); } 而实现方式也不难:利用firefox和ie都支持的Function.prototype.toString,就是在运行时能得到一个方法的源代码。 这个源代码是语法正确的,只要分析一下格式,生成其他代码就可以了。 计划在objot库21版中提供这种代码分析和生成的功能,并用它来实现aop和模拟多线程(就类似前面举的例子) |
|
返回顶楼 | |
发表时间:2007-06-04
birdjavaeye bingo! 不过并不需要分析源代码,有其他途径可以达到。
|
|
返回顶楼 | |
发表时间:2007-06-04
还有其他办法?说说看
要支持ie&firefox, windows&linux哦 |
|
返回顶楼 | |
发表时间:2007-06-04
期待 hax 的大作!
|
|
返回顶楼 | |