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:
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'});
});
.......................
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!
Grazie in anticipo !