dwr提供的js方法呼叫預設是非同步的,為了得到同步的執行結果,一般類似以下方式處理:
dwrengine.setasync(false); //設定成同步
var _data = null;
test1ajax.sayhello('hello', function(data)); //dwr呼叫服務端的函式
dwrengine.setasync(true); //重新設定成非同步
alert(_data); //對返回值進行處理
很簡單的需求,為什麼**要如此繁瑣呢?
可以對dwr簡單改動後,以下面的方式呼叫同步方法:
var result = test1ajax.sayhello('hello'); //呼叫同步方法
alert(result); //對返回值進行處理
如果需要非同步呼叫的話,和以前的寫法一樣:
test1ajax.sayhello('hello', function(data));
改動主要是將設定同步的操作放到dwr動態生成的js**中,如下:
另外重新提供乙個defaults.properties檔案,將其中的
org.directwebremoting.extend.remoter修改為:org.directwebremoting.syncremoter即可。
C 委託的同步呼叫和非同步呼叫
委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...
C 委託的同步呼叫和非同步呼叫
委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...
C 委託的同步呼叫和非同步呼叫
委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...