Niedawno odkryłem I naprawdę jak jQuery.Deferred() i funkcje, które daje do obsługi asynchronicznej kontroli przepływu (Promises). Przypuszczam, że rzeczy, które najbardziej mi się podobają, to haki oddzwaniania dla żądania Ajax (.done()
i .fail()
) oraz możliwość otrzymania .resolve()
i .reject()
obietnicy. Być może potrzebuję tej funkcji w pewnym momencie dla projektu GWT i zastanawiałem się, czy jest coś analogicznego w tym ekosystemie?jQuery.Deferred()/Obiecuje funkcjonalność w GWT?
Odpowiedz
gwtquery 1.4.0 narzędzia odroczony w ten sam sposób jQuery robi:
- one na CommonJS Based Promises/A + Spec
- Realizacja gQuery inspirowana jest w API jQuery.
- I obietnice gQuery są zgodne z MVP, więc mogą być uruchamiane w JVM.
Ostatnio daliśmy prezentację gwtquery w GWT.create Conference wprowadzającą nowe rzeczy jak obietnic, można spojrzeć do slides (Push klawiszy strzałek, aby przejść między slajdami).
ajax()
teraz zwraca Promise
, można również uzyskać promise()
powiązane z kolejką dowolnego obiektu gQuery. Dodatkowo możesz utworzyć Deferred()
w każdym wywołaniu gwt lub użyć funkcji pomocnika do obsługi RequestBuider, RPC, RF.
Zrobione z testów JUnit, tutaj masz fragment kodu, w jaki sposób można z nich korzystać w kodzie:
public void testDeferredAjaxWhenDone() {
String url = "https://www.googleapis.com/blogger/v2/blogs/user_id/posts/post_id?callback=?&key=NO-KEY";
delayTestFinish(5000);
GQuery.when(Ajax.getJSONP(url))
.done(new Function() {
public void f() {
Properties p = arguments(0);
assertEquals(400, p.getProperties("error").getInt("code"));
finishTest();
}
});
}
public void testDeferredAjaxWhenFail() {
String url1 = "https://www.googleapis.com/blogger/v2/blogs/user_id/posts/post_id?callback=?&key=NO-KEY";
String url2 = "https://localhost:4569/foo";
delayTestFinish(5000);
GQuery.when(
Ajax.getJSONP(url1),
Ajax.getJSONP(url2))
.done(new Function() {
public void f() {
fail();
}
})
.fail(new Function(){
public void f() {
finishTest();
}
});
}
int progress = 0;
public void testPromiseFunction() {
delayTestFinish(3000);
final Promise doSomething = new PromiseFunction() {
@Override
public void f(final Deferred dfd) {
new Timer() {
int count = 0;
public void run() {
dfd.notify(count ++);
if (count > 3) {
cancel();
dfd.resolve("done");
}
}
}.scheduleRepeating(50);
}
};
doSomething.progress(new Function() {
public void f() {
progress = arguments(0);
}
}).done(new Function() {
public void f() {
assertEquals(3, progress);
assertEquals(Promise.RESOLVED, doSomething.state());
finishTest();
}
});
}
Właśnie otwartych źródeł Promises for Java zainspirowaną CommonJS obiecuje/A + wniosek i Futures firmy Dart.
Moim celem jest niedługo dodać obsługę GWT (zgodność z GWT dla Promises
i FulfillablePromise
oraz pomocników przynajmniej dla GWT-RPC).
- 1. Funkcjonalność XmlSerializer w PowerShell?
- 2. Różnica między gwt, gwt-rpc, ext-gwt, inteligentny gwt
- 3. Funkcjonalność PHP `preg_match_all` w Javie
- 4. Kod GWT LUB projektant GWT?
- 5. Silniki szynowe rozszerzające funkcjonalność
- 6. Elasticsearch - poprzednia/następna funkcjonalność
- 7. Funkcjonalność jądra linuksa
- 8. Hibernate postgresql powiadamia funkcjonalność
- 9. Funkcjonalność void operator()()
- 10. Rola EventBus w GWT
- 11. Przypomnienie w GWT
- 12. Nawlekanie w GWT (Client)
- 13. Shift Key w GWT?
- 14. Serializacja BigDecimal w GWT
- 15. Obraz w przycisku GWT
- 16. gwt pushButton w UiBinder
- 17. Formatowanie ciągów w GWT
- 18. Używanie NotificationMole w GWT
- 19. Twardy odświeżanie w GWT
- 20. Gdzie wprowadzić wspólną funkcjonalność w Asp.net MVC
- 21. funkcjonalność podobna do streroru w jądrze?
- 22. jaka jest funkcjonalność operatora "&:" w ruby?
- 23. Implementacja Cofnij - Ponów funkcjonalność w Qt?
- 24. Jak uzyskać funkcjonalność "virtualhost" w Go?
- 25. GWT bookmarket lub GWT jako biblioteka zewnętrzna
- 26. regex - pomylić o funkcjonalność lookaround
- 27. Jak przywrócić funkcjonalność indeksowania? (Xcode)
- 28. Czy można ograniczyć funkcjonalność DLL?
- 29. Czy mogę zawiesić funkcjonalność iScroll?
- 30. SandCastle Help Builder: Funkcjonalność wyszukiwania
Nice! Wkrótce spróbuję :) – blong
@Thomas awesome job –
throyer/promises został wycofany. Wszelkie wskazówki, gdzie się udać? – Stevko