如何在异步调用后在GWT中等待一段时间

时间:2015-10-14 05:08:12

标签: gwt gwt-rpc

在我的代码中,我正在进行异步调用以进行验证。取决于验证的返回值,我需要执行一些行。 但我无法将这些行放在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)在回调方法完成之前执行。

2 个答案:

答案 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在使用代码完成时不建议使用此解决方案,但它可以正常工作。

此外,我可能会重新考虑您的设计,因为当您有许多连接/耦合类的回调时,它会变得非常棘手(根据经验)。但这只是一个快速思考,我既不知道你的项目的大小,也不知道设计。