Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    ordine esecuzione comandi

    Ciao, non sono molto pratico di programmazione e sto mettendo insieme pezzi di codici che trovo in giro ma mi è capitata una cosa che non mi aspettavo.
    Volevo salvare in una variabile il numero di elementi che ho in un file json e non capisco perchè

    codice:
     $.getJSON("http://localhost/****", function(json) {
         var id=json.features.length; 
         console.log(id);
       });
    mi restituisce nella variabile id quello che voglio mentre
    codice:
     var id;
     $.getJSON("http://localhost/****", function(id,json) {
         id=json.features.length; 
       });
       console.log(id);
    non ci pensa proprio?


    sarebbe anche interessante capire perchè mi restituisce prima il console.log dopo la funzione e poi il console.log interno alla fuzione se ne metto due... come se prima eseguisse tutti i comandi esterni alla funzione e solo successivamente la funzione e i comandi interni ad essa....
    grazie

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ciao, semplicemente perche' getJSON o tutte le chiamate comunque in Ajax sono asincrone e cioe' vengono eseguite in background in maniera indipendente. La tua chiamata potrebbe durare per esempio 3 secondi ma il tuo script continuerebbe comunque.
    Tutto quello che sta all'interno del getJSON verrà eseguito quando quella chiamata avrà finito.
    Il resto proseguirà comunque. E' quindi corretto il primo caso. Se devi fare qualcosa solo dopo avere recuperato dal json dei dati lo devi fare al suo interno(o richiamare una funzione al completamento).
    codice:
     $.getJSON("http://localhost/****",function(json){
         var id=json.features.length; 
         console.log(id);
       });
    Oppure
    codice:
    function prova(json){
    var id=json.features.length; 
         console.log(id);
    }
    $.getJSON("http://localhost/****",prova);

    Nella documentazione è spiegato come funziona

  3. #3
    grazie mille

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.