2016-12-05 2 views
0

Я хочу получить ответ URL-адреса URL-адреса в gwt перед вызовом метода Async.Получить HTTP-ответ перед вызовом Async в gwt

Ниже приведен мой рабочий код, но я хочу выполнить его перед вызовом Async.

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "http://localhost:8080"); 
    try { 
     builder.sendRequest(null, new RequestCallback() { 
      @Override 
      public void onResponseReceived(Request request, Response response) { 

      } 

      @Override 
      public void onError(Request request, Throwable exception) { 
       throw new UnsupportedOperationException("Not supported yet."); 
      } 
     }); 
    } catch (RequestException ex) { 

    } 
    return response.getStatusCode(); 

Также обратите внимание, что я использую JavaScript в моем проекте. Есть ли способ написать этот код в javaScript и получить ответ в моем OnModuleLoad метод?

Любые предложения будут высоко оценены.

+0

Вы можете использовать javascript/jquery обещание. Javascript обещание: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise Jquery обещание: https://api.jquery.com/promise/ –

+1

Но даже если вы получаете (get) значение getStatusCode перед вызовом RequestCallback (asyc), значение будет неактуальным, вероятно, значением по умолчанию для примитивного типа. Вы должны подождать, пока фактический ответ не будет получен или не будет выполнен, и поскольку javascript является моно-потоком, вы не можете блокировать ожидания, вы можете только ждать, используя обратные вызовы. Но, как сказал @MaheshGosemath, вы можете использовать асинхронные обертки как [Promise] (https://github.com/gwtquery/gwtquery) или [Observable] (https://github.com/intendia-oss/rxjava-gwt). –

+0

Я вызывал api с клиентской стороны. Но я должен проверить его на стороне сервера. Поэтому я сделал сервлет и проверил его на javascript. Решила :-) –

ответ

0

Я создал простую функцию в javascript с помощью async: false. Затем я нажимаю URL и получаю ответ.

Этот ответ будет выполнен в onModuleLoad с использованием собственного метода. Синхронизация вызова.

Решено :-)