Comment vérifier si la fonction javascript est prêt/fait (jQuery)
Je suis en train de travailler sur l'apprentissage d'un planificateur qui reçoit les données (languagekeys, les tâches, les activités, etc.) à partir d'une base de données. Parce que j'ai besoin d'une chaîne JSON, j'ai coder avec json_encode
de travailler avec elle en JavaScript.
J'ai une fonction différente (pour les clés, les tâches, les activités, etc.) qui reçoit ces données et les enregistre dans un tableau.
function get_tasks(start_date,end_date){
maxsubtasks=0;
maxtasks=0;
$.getJSON(json_data+"?t_startdate="+start_date+"&t_enddate="+end_date, function(data) {
tasks=new Array();
$.each(data.tasks, function(i,item){
tasks[i]= new Object();
tasks[i]["t_id"]=item.t_id;
tasks[i]["t_title"]=item.t_title;
tasks[i]["t_content"]=item.t_content;
. . .
if ( i > data.tasks.length) return false;
maxtasks = data.tasks.length;
if(item.t_parent > 0){
maxsubtasks++;
}
});
});
return true;
}
Tout fonctionne très bien. J'ai besoin d'aide, car j'ai maintenant appeler cette fonction dans $(document).ready()
. Je veux construire mon apprentissage planificateur une seule fois la fonction get_tasks()
est complet (le tableau est rempli avec des données). Sinon, je vais avoir des erreurs.
Comment cela peut-il être résolu?
Voici ce que j'ai dans $(document).ready()
:
if(get_tasks(first_day,last_day) && get_tmp_data()){ //If this function is done
//This function should be fired -- just like a callback in jQuery
init_learnplanner();
}
- Comme une note de côté: Vous devez créer votre objet avec
task[i] = {t_id: item.t_id, t_title: item.t_title,...}
ou c'est peut-être suffisant pour fairetask[i] = item
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un rappel à la fonction:
Puis après avoir rempli le tableau dans la fonction, appeler la fonction de rappel:
Maintenant, vous pouvez utiliser la fonction de rappel paramètre à initialiser l'apprentissage planner:
Vous devriez être en mesure de spécifier un rappel dans
$.getJSON
, qui sera exécuté dès que la requête est terminée.EDIT:
Vous êtes déjà le faire, mais pourquoi ne pas simplement appeler le deuxième bloc de code à partir de la fin de la fonction de rappel d'une fonction dans
$.getJSON
?D'autres réponses n'ont pas bien fonctionné pour moi parce que j'ai 5 fonctions qui utilise mes données avec
$.getJSON
, et j'ai besoin d'avoir collecté toutes les informations à même de commencerinit_learnplanner()
.Après plusieurs heures de recherche, j'ai découvert la fonction jQuery ajaxComplete, qui fonctionne comme un charme pour moi. jQuery suivi de tous les appels ajax qui ont été licenciés et des déclencheurs rien affecté
.ajaxComplete()
quand on est terminée.Ce que je suis en train de faire est généralement quelque chose comme ceci:
simple, ressemble à un débutant, mais il fonctionne 🙂 😀
espère que cela vous aider à