qusqui21
#javascript #jquery Czesc, mam problem z callbackami w moim programie, a na stacku oznaczyli mi temat jako duplicate, tyle ze nie ogarniam orginału bo nie ma przykladowego kodu i dalej mi nie działa.
function loadSupportList(callback) { //2x jedno loadPageContent drugie loadSupportList
var url = url;

showCurtain();
$.post(url, {
userId : userId,
sessionId : sessionId,
success: callback
}).done(function(data) {
if (data['success'] == true) {
callback(data['tasks']);
} else {
console.log("Error: " + data['error']);
}
}).fail(function() {
console.log("Unknown error.");
})
}

function create(){
loadProjects();
loadUsers();
var htmltask = "";
var html = "";
loadPageContent(function(tasks){
htmltask = whatStatus(tasks); //whatStatus zwraca htmla
});
loadSupportList(function(tasks){
html = support(tasks); //support zwraca htmla
});
$("#devtask-table").html(titleDraw() + "" + htmltask + html + "");
}
Jak to zrobić żeby działało?
  • Najlepsze
  • Wszystkie komentarze
larvaexotech
larvaexotech
Albo dajesz

$.post( { dane... , success: [co ma sie wydarzyc gdy dojdzie do skutku] } );

albo dajesz

$.post(
larvaexotech
larvaexotech
@qusqui21: sformatuj kod i wrzuć na js fiddla spróbóję pomóc
larvaexotech
larvaexotech
@qusqui21: $("#devtask-table").html ...........

to przenieś sobie do osobnej metody i wywołaj to w dwóch funkcjach "success":

function updateHtml() {
$("#
larvaexotech
larvaexotech
@qusqui21: Aaa i zapomniałem wyjaśnienia:

program nie czeka w żadne sposób aż ajax się zakończy więc funkcja jQuery ktora uaktualnia Ci htmla jest wywoływana gdy zmienne taskhtml supporthtml są jeszcze puste, potem callback(data['tasks']) zmienia wartości tych zmiennych ale dokument html zostaje ten sam :)
qusqui21
qusqui21 Autor
0
@larvaexotech: probowalem na wszystkie sposoby :/
qusqui21
qusqui21 Autor
0
qusqui21
qusqui21 Autor
0
@larvaexotech: hmm, teraz dobrze przekazuje te tasks, ale nie zwraca w whatStatus htmla. Dziwne rzeczy :(
qusqui21
qusqui21 Autor
0
@larvaexotech: loadTasks(function(tasks) {
var taskhtml = whatStatus(tasks);
});
loadSupportList(function(tasks) {
var supporthtml = support(tasks);
});
do tego momentu dziala, tutaj gubi zawartosc htmla, wiec pewnie to znowu ta asynchronicznosc ( ͡° ʖ̯ ͡°)
qusqui21
qusqui21 Autor
0
@larvaexotech: dobra wykombinowałem

loadTasks(function(tasks) {
taskhtml = whatStatus(tasks);
loadSupportList(function(tasks) {
supporthtml