Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Oczekiwanie na return funkcji, Promises?
markonix
post 1.04.2019, 17:04:27
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Mam własną metodę/plugin w jQuery, chciałbym aby była uniwersalna i przyjmowała callback jako opcjonalne ustawienie np. beforeSubmit().
W ciele tej metody chciałbym, aby po opaleniu eventu, moja metoda właściwa oczekiwała na zwrócenie bool'a z tej metody.
Ta metoda nie zwróci od razu tego, bo powiedzmy, że użyje metody confirm() w niej czyli musi jakby "czekać" na interakcje.

  1. function checkSth() {
  2. return confirm(); // to dopiero zwróci w momencie akcji
  3. }
  4.  
  5.  
  6. settings.checkSth.call().then(function(data) {
  7. // tu po akcji użytkownika zwróci zawsze true lub false
  8.  
  9. }).done(function() {
  10. // albo tu?
  11. });
  12.  
  13. // jeżeli checkSth zwróciło false chce tu dać return false czyli przerwać działanie metody właściwej; w innym przypadku kontynuuj


Czy to się da osiągnąć za pomocą promisess albo deffered?

// edit

  1. function askAboutConfirm() {
  2. return new Promise((resolve) => {
  3. $.confirm({
  4. title: 'Confirm!',
  5. content: 'Simple confirm!',
  6. buttons: {
  7. confirm: function () {
  8. resolve(true);
  9. },
  10. cancel: function () {
  11. resolve(false);
  12. },
  13. }
  14. });
  15. });
  16. }
  17.  
  18. function thisNeedConfirm() {
  19. alert('t');
  20. }
  21.  
  22. function loadPage() {
  23.  
  24. let terminate = false;
  25.  
  26. askAboutConfirm()
  27. .then(function(data) {
  28. if (data === true) {
  29. thisNeedConfirm();
  30. }
  31. });
  32.  
  33. // thisNeedConfirm(); v2
  34. }
  35.  
  36. loadPage();


Mam coś takiego, względnie działa. Jedynie to co czeka musi zostać przeniesione do then (chciałem wcześniej osiągnąć efekt, że czeka na ten return).
Jakieś uwagi?

Ten post edytował markonix 1.04.2019, 17:04:47


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:55