在我的代码中,我正在进行异步调用以进行验证。取决于验证的返回值,我需要执行一些行。 但我无法将这些行放在Async = public void success(布尔有效)的回调方法中。
由于其中一行是super.onDrop(context),它是另一个不能在异步回调方法中调用的类的方法。
请参阅以下行。我需要在异步调用完成后执行super.onDrop(context)。
stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) {
public void success(Boolean valid) {
if(valid==Boolean.TRUE){
//super.onDrop(context);
}
};
});
//condition is here
super.onDrop(context);
有什么办法,我会告诉gwt在执行super.onDrop(context)之前等待1或2秒。现在发生了什么, super.onDrop(context)在回调方法完成之前执行。
答案 0 :(得分:1)
你可以这样做:
stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) {
public void success(Boolean valid) {
if(valid==Boolean.TRUE){
drop();
}
};
});
private void drop() {
super.onDrop(context);
}
答案 1 :(得分:1)
另一种解决方案就像Thomas Broyer在评论中提到的那样:
stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) {
public void success(Boolean valid) {
if(valid==Boolean.TRUE){
ContainingClass.super.onDrop(context);
}
};
});
Eclipse在使用代码完成时不建议使用此解决方案,但它可以正常工作。
此外,我可能会重新考虑您的设计,因为当您有许多连接/耦合类的回调时,它会变得非常棘手(根据经验)。但这只是一个快速思考,我既不知道你的项目的大小,也不知道设计。