浏览 3451 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-03
function test(){ dwrTest.hello(function(data){alert(data)}) } 当你的javascript的test方法要返回这个值时就不好办了。因为DWR方法返回值是执行完后通过调用指定的函数将值返回。这们的话,我们往往会这么做 function test(){ var result; dwrTest.hello(function(data){result=data}) return result; } 上面的代码在使用的时候会发现它的返回值为"undefined",分析一下 dwrTest.hello(function(data){result=data}) 这一句中“function(data){result=data}"这个方法是一个传给dwrTest.hello的一个参数,是由hello方法执行完后再调用的,所以在test()中并不会执行,就直接返回了一个未初始化的"result"。 实际上这就是一个异步处理过程,而javaScript默认是同步执行的。 我们只要把上面的代码改成: function test(){ var result; DWREngine.setAsync(false); dwrTest.hello(function(data){result=data}) DWREngine.setAsync(true); return result; } 这样JavaScript执行的时候就会等待"dwrTest.hello"执行完毕后再执行接下来的语句,这时我们就可以直接取得返回值了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |