Frage

Gibt es eine Möglichkeit, Fabrikanfragen zu kündigen/abzubrechen? Mit GWT 2.3

War es hilfreich?

Lösung

Eine andere Option wäre, eine Alternative zu erstellen com.google.web.bindery.requestfactory.shared.RequestTransport Geben Sie an, anstatt zu verwenden DefaultRequestTransport. Der Nachteil (und den Aufwärtstrend zu Bobvs Ansatz) ist, dass Sie nicht wissen, wann Sie in der Anfrage auf dem Server ihn töten, daher haben Sie möglicherweise bereits einige Ihrer Methoden ausgeführt. Sie erhalten kein Feedback von ihnen. Sie werden einfach die ausgehende Anfrage einstellen.

Ich vermute, dass RF diese Funktion nicht bereits hat, wie es RPC tut. Berücksichtigen Sie jedoch auch den Fall von RPC oder RequestBuilder - wie benachrichtigen diese den Server, dass sie ihre Meinung geändert haben, und um die Anfrage nicht auszuführen? Mein Verständnis ist, dass sie es nicht tun - der einzige Weg, wie sie frühzeitig geschlossen werden, ist, wenn sie versuchen, die Antwort zu lesen/zu schreiben und einen TCP -Fehler zu erhalten, da die Verbindung geschlossen wurde. (Es ist möglich, dass ich mich irre, und dass ein anderer Faden den Zustand der TCP -Verbindung und Anrufe im Auge behält thread.stop(Throwable), aber Stopp wurde veraltet für veraltet schon eine Weile.)

Ein Gedanke wäre, eine Nachricht an den Server zu senden und ihm mitzuteilen, dass er andere Anfragen aus derselben Sitzung abgeben soll. Dies würde eine aktive Teilnahme an Ihrem Servercode erfordern, möglicherweise generisch in einem ServiceLayerDecorator Subtyp, wahrscheinlich zumindest in invoke, loadDomainObject(s), und getSetter, unter anderen. Dies ist eindeutig eindeutig, um GWT zu bitten, es für Sie zu bauen ...

Andere Tipps

Es gibt keine Möglichkeit, eine Anfrage nach dem zu stornieren fire() Methode wurde aufgerufen. Erwägen Sie einen Brauch zu bauen Receiver Basisklasse wie die folgenden:

public abstract class CancelableReceiver<V> extends Receiver<V> {
  private boolean canceled;

  public void cancel() {
    canceled = true;
  }

  @Override
  public final void onSuccess(V response) {
    if (!canceled) {
      doOnSuccess(response);
    }
  }

  protected abstract void doOnSuccess(V response);
}

Das Muster kann für andere Methoden in der wiederholt werden Receiver Typ.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top