![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Witam,
właśnie powoli odkrywam świat Promisów w JS, ale nie potrafię zrozumieć po co w API większości bibliotek Promise jest metoda done()? Ja rozumiem, że then() połyka zwracane wartości i błędy, a done() z kolei wszystko wyrzuca na zewnątrz do przetworzenia poza Promise, i rozumiem też zasadę "return Promise or call .done() on it", ale po co osobna funkcja do tego? Każdy chain Promisów gdzieś się kończy, czemu ostatni then() w tym chainie w momencie zmiany statusu z PENDING na FULFILLED lub REJECTED po prostu nie zachowuje się automatycznie jak to co robi teraz done()? W ten sposób byloby mniej problemów z używaniem then() vs done(), no i kod byłby bardziej reużywalny, bo łączenie promisów można byłoby robić out-of-the-box zamiast bawić się helperami. Może ktoś mi to rozjaśnić? Ten post edytował Skie 8.10.2015, 17:44:57 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
De facto, jeśli nie potrzebuje się wsparcia IE, można skorzystać z natywnego Promise: http://caniuse.com/#feat=promises
No i takie Q czy Bluebird są zgodne ze standardem A+ i dodatkowo dodają np done (są supersetem A+) → https://promisesaplus.com/implementations - inna rzecz, że IMO to done potrzebne nie jest. Problem z jQuery jest inny: obiecanki aż do wersji 3 po prostu nie są zgodne ze standardem A+… |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 08:12 |