Start functie als andere functie klaar is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Loek Lemmens

Loek Lemmens

22/05/2022 17:50:08
Quote Anchor link
Hoi hoi,


Ben een beetje het stoeien met JavaScript en wil graag dat functie B pas na functie A word gestart.
Ik heb een klein opzetje gemaakt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function1(function() {
  function2();
});



function function1(callback){
     var mLog = document.getElementById("log");

var w, df, delta1, alfa;
function chi_power(n) { return n; }

var calc_power = 0, power = 100000000;

function calculate(n) {
  if (n<10000000000000 && calc_power<power) {
    calc_power=chi_power(n,w,df,delta1,alfa);
    var message="n="+n+"<br>";
    progress(mLog,message);

    // proceed with the loop
    setTimeout(function () { calculate(n*2); }, 0);
  }
}

function progress(mLog, message) {
  mLog.innerHTML += message;
}

calculate(1);
  callback();
}

function function2(){
  alert('Functie 1 is klaar');
}


Maar toch word de alert al eerste gegeven, wat eigenlijk pas na functie 1 zou mogen gebeuren.
Gewijzigd op 17/06/2022 10:19:21 door - Ariën -
 
PHP hulp

PHP hulp

25/11/2024 01:04:30
 
- SanThe -

- SanThe -

22/05/2022 18:24:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function1(function() {  function2(); });



function function1(callback)
{
    var mLog = document.getElementById("log");
    var w, df, delta1, alfa;
    function chi_power(n)
    {
        return n;
    }

    var calc_power = 0, power = 100000000;

    function calculate(n)
    {
        if (n<10000000000000 && calc_power<power)
        {
            calc_power=chi_power(n,w,df,delta1,alfa);
            var message="n="+n+"<br>";
            progress(mLog,message);

            // proceed with the loop
            setTimeout(function () { calculate(n*2); }, 0);
        }
    }

    function progress(mLog, message)
    {
         mLog.innerHTML += message;
    }

    calculate(1);
    callback();
}

function function2()
{
    alert('Functie 1 is klaar');
}

function1 geeft de hele function2 door.
En al die andere functies zitten in function1.
Vast niet de bedoeling.
 
Jan Koehoorn

Jan Koehoorn

22/05/2022 18:55:53
Quote Anchor link
Waarom zou je een setTimeout met een timeout van 0 doen? De function setTimeout is asynchroon, dus na de eerste keer wordt meteen function2 aangeroepen in function 1. Als je die setTimemout verwijdert, werkt het prima.

@SanThe: Hé, ouwe vriend! :-) Keertje borrelen? (Zie je PM)
In JavaScript zijn "inner" functions geen probleem, dat mag gewoon.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>

<body>
    <pre id="log"></pre>
    <script>
    var mLog = document.getElementById("log");

    function progress(message) {
        mLog.innerHTML += message;
    }

    function function1(callback) {
        var w, df, delta1, alfa;
        var calc_power = 0,
            power = 100000000;

        function chi_power(n) { return n; }

        function calculate(n) {
            if (n < 10000000000000 && calc_power < power) {
                calc_power = chi_power(n, w, df, delta1, alfa);

                progress('n=' + n + '<br>');
                calculate(n * 2);
            }
        }

        calculate(1);
        callback();
    }

    function function2() {
        progress('calling function 2' + '<br>');
    }

    function1(function2);
    </script>
</body>

</html>
Gewijzigd op 22/05/2022 19:01:14 door Jan Koehoorn
 
- Ariën  -
Beheerder

- Ariën -

23/05/2022 15:58:15
Quote Anchor link
Jan Koehoorn op 22/05/2022 18:55:53:

@SanThe: Hé, ouwe vriend! :-) Keertje borrelen?


Eigenlijk wordt het toch eens tijd dat er een PHPhulp meeting moet komen. ;-)
 
Ed Jeurissen

Ed Jeurissen

23/05/2022 16:23:30
Quote Anchor link
Moet wel met de trein bereikbaar zijn hahaha!!
 
Jan Koehoorn

Jan Koehoorn

24/05/2022 20:04:14
Quote Anchor link
Offtopic:

Hebben we in een (ver) verleden een aantal keer gedaan. Is hartstikke leuk, je ziet eindelijk de gezichten die bij de namen horen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.