
请问有没有处理异步事件的良好设计模式?
目前正在考虑浏览器客户端js的设计问题,更好的设计实现ajax, 遇到对异步事件处理的问题,总是感到自己处理的不好,拿出来 大家讨论下。 如果一个函数在运行中间需要xmlHttpRequest异步调用,那么和同步调用不同, 需要小心的处理调用以后如何动作的问题,把调用以后要做的事情写成其 它函数(最好是内嵌函数),传递给xmlHttpRequest的 onReadyStateChange事件 例如下面的函数caller需要使用RemoteCall向服务器异步调用, 那么RemoteCall函数执行以后要做的事必须写到函数onCalled中, "" /* * caller是一个功能函数, * 它封装了一个异步方式的远程调用x_call(...)函数 * 但是存在的问题是: * 其它调用它的函数必须小心的处理 */ function caller(x,y,objFun) { /*前期准备工作 .... */ //... //开始远程调用,将异步调用后需要执行的函数onCalled放到onReadyStateChange事件里 RemoteCall("func1",x,y,onCalled); //异步调用后要执行的代码 function onCalled() { //....执行一些代码 //... //最后还要记得执行外部传递过来的函数 try { objFun(); } catch (e) { } } } //如果有两层以上的调用,必须这么做: function otherFun() { //做一些事情..... //.... //调用已经封装好的caller caller(1,2,onCalled); //后面的事情 //.... function onCalled() { ///......... } } ""+script+">" 上面那么写勉强能将就着看,但是如果有的函数需要调用otherFun()函数怎么办? 还是要注意调用者的异步处理问题。 请问有什么好办法吗? --------------- 我想起了MFC对异步事件的处理,好像也不是很爽 --------------- 我准备看看.net的异步方案:msdn :: dotnet中的异步模式 从这个blog上hunterpro大杂烩有篇文章
--EOF--
若无特别说明,本站文章均为原创,转载请保留链接,谢谢
本文地址: http://www.dulao5.com/thinking/2005/09/12/asynchronous-programming-design-pattern.textile