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

How to make wait some time in GWT after the Async call

在我的代码中,我正在进行异步调用以进行验证。根据验证的 return 值,我需要执行一些行。 但是我无法将这些行放在 Async = public void success(Boolean valid).

的回调方法中

因为其中一行是 super.onDrop(context),这是另一个 class 的方法,无法在异步回调方法中调用。

请看下面一行。我需要 super.onDrop(context) 将在异步调用完成后执行。

stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null){ public无效成功(布尔有效){ 如果(有效==Boolean.TRUE){ //super.onDrop(上下文); } }; });</p> <p>//条件在这里 super.onDrop(上下文);</p> <p>

有什么办法吗,我会告诉 gwt 在执行 super.onDrop(context) 之前等待 1 或 2 秒。现在发生的事情是, super.onDrop(context) 在回调方法完成之前执行。

你可以这样做:

stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) {
    public void success(Boolean valid) {
        if(valid==Boolean.TRUE){
            drop();
        }
    };
});

private void drop() {
   super.onDrop(context);
}

另一种解决方案是,就像 Thomas Broyer 在评论中提到的那样:

stepTypeFactory.onDropValidation(stepTypeFactory,new  AsyncCallbackModal(null) {
    public void success(Boolean valid) {
       if(valid==Boolean.TRUE){
       ContainingClass.super.onDrop(context);
       }
   };
});

Eclipse 在使用代码完成时不建议此解决方案,但它有效。

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