Ciao, grazie, io uso phpstorm ed è ottimo per gli annidamenti( molto simile a quello da te consigliato ), però io cercavo proprio una soluzione tecnica e pulita per scrivere chiamate asincrone in maniera semplice evitando annitamenti eccessivi e funzioni di callback, ti posto il codice da me viluppato ( sono andato avanti ) e forse capirai meglio:
Come puoi notare quando chiamo la funzione utility.render_group sono costretto ad utilizzare la funzione callback() per vedere il risultato (se uso return mi torna undefined) e nel cercare di tenere ordinato il codice passo a callback anche un secondo parametro per distinguere quali sono le operazioni da fare, così non devo fare una funzione di callback per ogni chiamata asincrona. Anche così però mi sembra tutto un po' incasinato, io volevo sapere se esistono soluzioni migliori e più ordinate di questa!codice:jQuery(document).ready(function () { //Variabile globale var utility = {} //Funzione che chiama i gruppi associati all'utente utility.render_group = function () { FB.api("/me",function (response) { if (response && !response.error) { callback(response,"group"); } } ); } function callback(response, type) { //In questa if creo l'elenco dei gruppi dell'utente if( type == "group" ){ FB.api( "/"+response.id+"/groups", function (gruppi) { if (gruppi && !gruppi.error && gruppi.data.length > 0) { console.log(gruppi); var list = "<ul class='list-contaienr'>"; jQuery.each(gruppi.data,function(index,value){ list += "<li class='item-group' data-id='"+gruppi.data[index].id+"'>"; list += "<span class='group-title'>"+gruppi.data[index].name+"</span>"; list += "</li>"; }); list += "</ul>"; jQuery(".list-container").html(list); jQuery(".sharepost").show(); } } ); } } //SDK Facebook jQuery.ajaxSetup({cache: true}); jQuery.getScript('//connect.facebook.net/en_US/sdk.js', function () { FB.init({ appId: '465653533595787', version: 'v2.3' // or v2.0, v2.1, v2.0 }); }); setTimeout(function () { FB.getLoginStatus(function (response) { if (response.status === 'connected') { //Prendo info dell'user collegato utility.render_group(); } else { jQuery(".gc-login-button").show(); } }); }, 2000); //Connessione a facebook jQuery(document).on("click", ".gc-login-button", function () { FB.login(function () { }, {scope: 'email,user_friends,user_groups,publish_actions'}); }); .......................
Grazie in anticipo !

Rispondi quotando