java - GWT 中的异步调用是否会由于另一个需要很长时间才能完成的异步调用而被阻止

标签 java gwt asynchronous

我有以下代码,每 3 秒异步执行一次

<Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
    @Override
    public boolean  execute() {
        try {
            RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "someurl");
            Request response = builder.sendRequest(null, new RequestCallback() {
                public void onError(Request request, Throwable exception) {                     
                }
                public void onResponseReceived(Request request, Response response) {
                // do some work                 
                }
            });
        } catch (RequestException e) {}
        return true;
    }
}, 3000);  

下面的代码需要很长时间才能完成。

try {
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "someurl");
    Request response = builder.sendRequest(null, new RequestCallback() {
        public void onError(Request request, Throwable exception) {                     
        }
        public void onResponseReceived(Request request, Response response) {
            // do some work which takes long time to finish             
        }
    });
} catch (RequestException e) {} 

我期望调度程序每 3 秒进行一次调用,但是当另一个调用需要更多时间才能完成时,调度程序内的调用就会被阻塞,这不应该是因为所有都是异步调用。

如果上述情况有任何问题,请告诉我。

最佳答案

onResponseReceived 在 UI 线程中执行。由于只有一个UI线程,因此它执行的所有事件都会排队并且不会重叠。

关于java - GWT 中的异步调用是否会由于另一个需要很长时间才能完成的异步调用而被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885226/

相关文章:

java - 构建-impl.xml :1045: Deployment error: Starting of Tomcat failed

java - 在字符串的特殊字符前添加 escape "\"

java - 当表单验证期间值为空时还显示错误消息

java - 如何在 GWT Java 中获取当前工作目录

ios - 快速滚动时在 UITableView 单元格中异步加载了错误的图片

java - 使用 Java 自动提交 HTML 表单以查找杂货店营业时间

java - 如何在 Java 中使用 XPath 读取 XML

java - 似乎与 com.badlogic.gdx.utils.AtomicQueue<T> 有关的 libGDX GWT 编译错误

ios - 按下主页按钮后如何与服务器同步异步?

javascript异步调用和单线程模型