在客户端使用 gwt 时,通常会调用异步方法并在回调方法中进行处理。
asyncService.method(new AbstractAsyncCallback<Number>() {
@Override
public void onSuccess(Number num) {
// do something with number
}
});
但是经常遇到需要从一个异步方法获取结果,传递给另一个方法等的情况。这就是为什么我们得到脏的级联代码,很难阅读。
asyncService.method(new AbstractAsyncCallback<Number>() {
@Override
public void onSuccess(Number num) {
asyncService.method1(num, new AbstractAsyncCallback<String>() {
@Override
public void onSuccess(String str) {
asyncService.method2(str, new AbstractAsyncCallback<Void>() {
@Override
public void onSuccess(Void void) {
// do something
}
});
}
});
}
});
我知道,我们可以在服务器端结合这三个调用来制作单独的服务方法,但是如果我们需要很多这样的不同方法的组合呢?另一个问题是添加单独的方法,该方法执行我们可以通过简单组合现有方法获得的功能。
是否有一种通用模式可以摆脱此类代码而不更改服务器端服务?