Dziwne dzialanie promise na Firefox

0

Potrzebuje przechwycic proces wysylania formularza. W Chromie i Safari wszystko gra, ale odpalenie tego w Firefoxie renderuje na ekranie [object Promise]. Zdaje sobie sprawe, ze uzywanie JSa w urlach jest nierekomendowane, ale niestety na te czesc kodu nie mam wplywu. Odpowiadam tylko za "wklejke" JSowa. Wiecie moze, jak temu zaradzic?

<form action="/" method="post" id='form1'>
    <input type="text" name="something" value="something">
</form>
<a href="javascript:document.getElementById('form1').submit();">Submit form</a>


<script>
    form = document.getElementById('form1')
    tmp_submit = form.submit

    form.submit = function(e) {
        return myfunc().then(ok => {
            return tmp_submit.apply(form);
          });
    }
    function myfunc() {
      return new Promise(function (resolve, reject) {
            console.log('Promise...')
            resolve("ok");
          });
    }
</script>
0
form.submit = () => { // nie ma potrzeby pisania `function` - funkcja strzałeczkowa w zupełńości wystarczy
    myfunc().then(()=> {
        tmp_submit.apply(form); // nie ma potrzeby robienia `return` - w przypadku promisów i tak nie ma to znaczenia
    });

    return false; // zwracamy `false` aby poinformować przeglądarkę, że formularz został już obsłużony, więc nie musi ona robić żadnego wysyłania danych na swoją rękę
}
0

Dzieki @Patryk27, zdecydowanie ladniejszy kod, ale niestety wciaz nie dziala zgodnie z oczekiwaniami. Widac to wyrazniej, gdy sie lekko zmodyfikuje myfunc():

    function myfunc() {
      return new Promise(function (resolve, reject) {
            function check() {
              console.log('Check...')
              if (true) {
                clearInterval(intervalID);
                resolve("ok");
              }
            }
            var intervalID = setInterval(check, 100);
          });
    }
0

W sensie, że co się (nie)dzieje?

1 użytkowników online, w tym zalogowanych: 0, gości: 1