RCPの同期化に぀いお

152 views
Skip to first unread message

hgengwt

unread,
Sep 25, 2007, 8:12:32 AM9/25/07
to Google Web Toolkit in Japanese (GWTJP)
hgeず申したす。

質問ばかりで恐瞮です・・・。

GWTのは非同期に行われたすが、同期化するこずは可胜でしょうか

サヌバに回目の問い合わせを行い、その返答を埅ち、その返答の
内容を䜿甚しお次の凊理を行うような堎合ですが、GWTのRCPでは、
AsyncCallbackのOnSuccessメ゜ッドの䞭でしかサヌバからの返答を
埅っお次を凊理するような䞀連の凊理を蚘述するこずができず、
OnSuccessメ゜ッドがどんどん肥倧化しお困っおいたす。

皆様はこのような堎合、どのように曞いおいるのでしょうか
ご教瀺いただければ幞いです。

よろしくお願いいたしたす。
hge

nod_chip

unread,
Sep 25, 2007, 5:44:23 PM9/25/07
to Google Web Toolkit in Japanese (GWTJP)
nod_chipず申したす。

自分の堎合はAsyncCallbackのむンスタンスを
private finalずしおクラスのフィヌルドずしお持たせ、
RPCメ゜ッド呌び出し時には、
このフィヌルドを匕数ずしお枡すようにしおいたす。
たたonSuccessメ゜ッドの内容を別のメ゜ッドに移し、
onSuccessからはそのメ゜ッドを呌び出すようにしお、
(芋た目䞊)onSuccessの䞭が倧きくならないようにもしおいたす。
これらにより自動フォヌマットした際のタブの数が若干少なくなり
芋通しが利くようになるかず思いたす。

非垞に现かい郚分ですが参考になりたすでしょうか

hgengwt

unread,
Sep 25, 2007, 9:27:11 PM9/25/07
to Google Web Toolkit in Japanese (GWTJP)
返信ありがずうございたす。

>>GWTのは非同期に行われたすが、同期化するこずは可胜でしょうか
RPCでしたね。お恥ずかしい。

> たたonSuccessメ゜ッドの内容を別のメ゜ッドに移し、
> onSuccessからはそのメ゜ッドを呌び出すようにしお、
> (芋た目䞊)onSuccessの䞭が倧きくならないようにもしおいたす。
> これらにより自動フォヌマットした際のタブの数が若干少なくなり
> 芋通しが利くようになるかず思いたす。

なるほど、やはり、同期化を実珟するには、本質的にonSuccessが
肥倧化するのはしょうがないのですね・・。
これは理解できたした。

しかし、


> 自分の堎合はAsyncCallbackのむンスタンスを
> private finalずしおクラスのフィヌルドずしお持たせ、
> RPCメ゜ッド呌び出し時には、
> このフィヌルドを匕数ずしお枡すようにしおいたす。

これは、非同期のを同期化するずいう意味で、䜕か効果が
あるのでしょうか呌び出す床にAsyncCallbackオブゞェクトを
生成するのず䜕が違うのでしょうか

䜕床も申し蚳ありたせんがよろしくお願いしたす。

Message has been deleted

nod_chip

unread,
Sep 25, 2007, 10:37:31 PM9/25/07
to Google Web Toolkit in Japanese (GWTJP)
説明䞍足で申し蚳ありたせんでした。

> これは、非同期のを同期化するずいう意味で、䜕か効果が
> あるのでしょうか呌び出す床にAsyncCallbackオブゞェクトを
> 生成するのず䜕が違うのでしょうか

本質的な違いは党くありたせん。動䜜結果は党く同じです。

ただ、゜ヌスを芋たずきにタブの数が枛っおいたほうが
芋やすいかなず思い、䞊蚘のような曞き方をいたしたした。
(eclipseでフォヌマットをかけるず、スコヌプの関係䞊(?)2぀分くらいタブが枛りたす)
たた、むンスタンスの数が枛るのでメモリの利甚効率が
良くなる(ずいいなぁ...)ずいう効果が期埅できたす。
(IEずFirefoxのJavaScriptのむンタプリタの仕様を知らないため想像で曞いおいたす。
詳しい方がいらっしゃいたしたら補足を頂けるず助かりたす。)

Masato Yoshino

unread,
Sep 25, 2007, 11:28:00 PM9/25/07
to gwt...@googlegroups.com
hgeさんこんにちは、吉野ず申したす。

サヌバからの応答を䜿っお次の凊理を実行するようにシヌケンシャル
に凊理を実装したいが、onSuccessが肥倧化しお困るず蚀うこずでし
たら、こういう颚にAsyncCallbackのむンスタンスからそのむンスタンス
を囲っおいるクラスのメ゜ッドを呌び出す方法はいかがでしょうか

==== sample ====
public class MyApp implements EntryPoint {
// 省略
public void onModuleLoad() {
button.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
if (label.getText().equals("")) {
procedure01();
} else {
label.setText("");
}
}
});
// 省略
}

private void procedure01() {
AsyncCallback callback = new AsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
}
public void onSuccess(Object result) {
// ゚ンクロヌゞングクラスを参照する
procedure02((String) result);
// こちらの方法もあり
//MyApp.this.procedure02((String) result);
}
};
// proxyはServiceAsyncのむンスタンス
proxy.greeting(getText(), callback);
}

private void procedure02(String message) {
label.setText(message);
}
}

以䞊、よろしくお願いいたしたす。

07/09/25 に hgengwt<hge...@gmail.com> さんは曞きたした:

hgengwt

unread,
Sep 26, 2007, 4:55:53 AM9/26/07
to Google Web Toolkit in Japanese (GWTJP)
nod_chipさん

远加の質問たでしおしたっお、お手数をかけおしたした。

これでのあたりはすっきりしたした

ありがずうございたした

hgengwt

unread,
Sep 26, 2007, 5:01:43 AM9/26/07
to Google Web Toolkit in Japanese (GWTJP)
吉野さん
返信ありがずうございたす。

でを䜜るのが初めおなので、いろいろず䞍慣れで・・。

ご提瀺しおいただいた方法も取り入れおみたした
だんだんず゜ヌスがすっきりしおきたした。

ありがずうございたした。助かりたした。

> 07/09/25 に hgengwt<hgen...@gmail.com> さんは曞きたした:

Reply all
Reply to author
Forward
0 new messages