Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Chiamare funzione e continuare solo dopo il suo completamento

    Salve,

    st� facendo un'app abbastanza complessa e mi trovo in una situazione un po' particolare.

    All'interno di una funzione ne richiamo un'altra che mi restituisce dei dati (un json) arrivati da una chiamata ajax, subito dopo voglio effettuare un' semplice console.log di questi dati.

    Al momento per� mi esce sempre undefined perch� quando vado ad eseguire il console.log la variabile globale che vado a definire nella chiamata ajax non � ancora valorizzata.

    Vi metto un po' di codice per farvi capire meglio

    codice:
    var parents = "";
    page.get_parents = function (value) {
    $.ajax({
            dataType : "json",
    type: "POST",
    data: {
                "action": "get_parents",
            },
    success: function (response) {
                parents = response;
    },
    error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
    console.log(err.Message);
    }
        });
    }
    
    page.test = function(){
         page.parents(value);
         console.log(parents);
    }
    
    page.test();
    In pratica il console.log restituisce sempre undefined perche parents non � valorizzata in un'tempo utile.
    Con un setTimeout andrebbe tutto bene ma non mi sembra una soluzione elegante diciamo.

    Come potrei ovviare?

    Grazie in anticipo

  2. #2
    Le chiamate ajax sincrone sono state deprecate, quindi mi sento di consigliarti di "fare il console.log" nella success function della chiamata ajax.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Le chiamate ajax sincrone sono state deprecate, quindi mi sento di consigliarti di "fare il console.log" nella success function della chiamata ajax.

    Che tu sappia è proprio l'unico sistema? Volevo lasciare quella funzione a svolgere quell'unico lavoro di recuperare specifici dati dal server e poterla riutilizzare altre volte in altri punti, se comincio a fare il console.log nel success (chiaramente non devo fare il console.log e basta devo lavorare sui dati di ritorno) finisce che quella funzione servirà unicamente in un'punto e non in altri. L'unica che mi viene in mente è un setTimeout ma manco è bellissima come cosa, rischio di incartarmi nell'uso delle funzioni.

    Grazie in anticipo!

  4. #4
    Quote Originariamente inviata da Madsex Visualizza il messaggio
    Che tu sappia è proprio l'unico sistema? Volevo lasciare quella funzione a svolgere quell'unico lavoro di recuperare specifici dati dal server e poterla riutilizzare altre volte in altri punti, se comincio a fare il console.log nel success (chiaramente non devo fare il console.log e basta devo lavorare sui dati di ritorno) finisce che quella funzione servirà unicamente in un'punto e non in altri. L'unica che mi viene in mente è un setTimeout ma manco è bellissima come cosa, rischio di incartarmi nell'uso delle funzioni.

    Grazie in anticipo!
    Dovresti usare le promises, dai un'occhiata qui:
    https://api.jquery.com/promise/

    Se ti sento ancora parlare di setTimeout, ti banno
    Ultima modifica di lucavizzi; 25-06-2017 a 13:11

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Se ti sento ancora parlare di setTimout, ti banno
    Eheheheh per questo domando, non piace proprio nemmeno a me!

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.