Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44

    Esecuzione Funzioni Sincrone e Asincrone

    Salve ho un domanda generale. Supponiamo di avere due funzioni a() e b(). Ora se io scrivo

    codice:
    a();
    b();
    b() non aspetta la fine dell'esecuzione di a() perchè, mi pare di aver capito, vengono eseguite in modo asincrono.
    E se io volessi farle eseguire in modo sincrono? Se la risposta è che devo usare le promises potreste armi un esempio con le funzioni a e b in modo che dopo l'esecuzione di a parta b. Sarebbe bello se si potesse fare una cosa del tipo a().then(b); ma non credo sia la sintassi corretta.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ciao, se la sola necessità è quella di eseguire B in base al risultato di A basta questo
    codice:
    function b() { return true;}
    
    function a() {
      if( b() ){
         //faccio qualcosa quando B ritorna true
         return;
       }
       //faccio altro se B ritorna false
    }
    a();
    Così come hai scritto le funzioni vengono eseguite contemporaneamente e a meno che non ci sia una reale chiamata asincrona tipo in ajax vengono comunque eseguite in sequenza.

    Qui puoi leggere come funzionano le promises .

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Okay grazie andrò a leggermi meglio come vengono eseguite le funzioni e le istruzioni dentro e funzioni quando ne eseguiamo più di una. Per esempio se io faccio:
    codice:
    function a(){
    
      //istruzioni 1
      b();
      //istruzioni 2
    
    }
    Qual è l'ordine di esecuzione? io vorrei fosse istruzioni1 poi b() e poi istruioni 2

    PS correggi il link alle promises, grazie della risposta!
    Ultima modifica di tom135; 03-01-2018 a 12:08

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    https://developer.mozilla.org/it/doc...bjects/Promise

    Così come hai scritto se non c'è nulla di asyncrono all'interno della funzione b(), verrà eseguito tutto in sequenza (1, b(), 2).
    Se devi eseguire qualcosa in base quello che è stato generato da altro codice (es. la tua funzione b) ovviamente dovrai andare a leggere quel che ritornerà (sia che ritorni direttamente qualcosa o che vada magari a settare una variabile globale).

    codice:
    var test = null;
    
    function b() {
      test = 'ciao';
    }
    
    function a(){
       console.log('istruzione 1');
       b();
       console.log(test);
       console.log('istruzione 2');
    }
    
    a();
    Se provi questo che non ha nulla di asyncrono vedrai in console : istruzione 1, ciao, istruzione 2.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    okay grazie dei chiarimenti! ciao!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.