Próbowałem pracować nad przykładem kodu, aby zrozumieć moje obietnice. Ale nie potrafię wymyślić, jak radzić sobie z wywołaniami zwrotnymi i później uzyskać "możliwą" wartość.Próba zrozumienia obietnicy Ember JS
Oto dwa istotne przykłady JSBin, nad którymi pracuję. Napisane w pełnym stylu, aby emulować pieczenie ciasteczek.
ember.js nie asynchronicznie
http://jsbin.com/iSacev/1/edit
całkowicie synchronicznej celu pokazania podstawowych zmienić (celowo za pomocą podstawowego modelu obiektu)
ember.js z asynchronicznego obiecuje
http://jsbin.com/udeXoSE/1/edit
Próba przedłużenia pierwszego przykładu i implementacji metody, gdy rzeczy są wykonywane z opóźnieniem i zwraca spełniony obiekt obietnicy w późniejszym terminie.
koncepcje próbujące zrozumieć:
- Jak prawidłowo obsługiwać obietnic i specjalnie Ember.RSVP.Promise i uzyskać obiekt później.
- Jak stosować metodę Ember.run.later zamiast setTimeout
Mike dziękuję bardzo. Twój przykład ma sens. Tak więc "wartość" jest spełnioną obietnicą i po prostu muszę sobie z nią poradzić. Jednak to, co jest dla mnie mylące, polega na tym, jak radzić sobie z wersją z inną funkcją. na przykład dlaczego te dwa przykłady nie działają http: // jsbin.com/omIZeq/1/edit za pomocą "tego" http://jsbin.com/omIZeq/2/edit przy użyciu "wartości" –
Cieszę się, że pomógł. Aby poradzić sobie z opcją fx, wystarczy podać ten argument jako argument. Problem z pierwszym jsbin polega na tym, że zamiast podawać fx jako arg, wykonuje on fx i przekazuje wynik jako arg. Więc zamiast 'cookiePromise.then (App.cookieDeliveredSuccessfully (this), App.cookieNotDelivered (this));' powinno to być 'cookiePromise.then (App.cookieDeliveredSuccessfully, App.cookieNotDelivered);' –
Ahhhh ok. Zakładam więc, że wewnętrzna implementacja funkcji wtedy przekazuje argument za kulisami. Chyba dlatego, że nie widziałem czegoś między nawiasami klamrowymi, tego nie było. Teraz eksperymentuj z łańcuchem wielu obietnic. Dzięki! –