一般在页面中要取DWR方法的值的做法是

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默认是同步执行的。

我们只要把上面的代码改成:

 test(){
     var result;
     DWREngine.setAsync(
false);
     dwrTest.hello(
function(data){result=data})
     DWREngine.setAsync(
true);
     
return result;
}
这样JavaScript执行的时候就会等待"dwrTest.hello"执行完毕后再执行接下来的语句,这时我们就可以直接取得返回值了。

相关文章:

  • 2021-06-13
  • 2021-12-17
  • 2022-12-23
  • 2022-01-04
  • 2022-12-23
  • 2021-12-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
  • 2021-08-30
  • 2022-12-23
相关资源
相似解决方案