DWR同步呼叫的一點改進

2021-08-25 04:42:12 字數 734 閱讀 9595

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 ...