Wpis z mikrobloga

#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?
  • 9
Albo dajesz

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

albo dajesz

$.post( { dane... } ).done( [co ma się wydarzyć gdy dojdzie do skutku] );

nie ma sensu korzystać z dwóch na raz.
@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: 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 :)
@larvaexotech: dobra wykombinowałem

loadTasks(function(tasks) {
taskhtml = whatStatus(tasks);
loadSupportList(function(tasks) {
supporthtml = support(tasks);
$("#devtask-table").html(
titleDraw() + "" + supporthtml + taskhtml
+ "");
});

Dzieki za pomoc :>