Во-первых, я должен признать, что я относительно новичок в JavaScript, но недавно я столкнулся с той же проблемой при использовании функции jQuery ajax. Мне пришлось загрузить пару документов через POST на сервер в определенном порядке. Вложив все обратные вызовы, вы получите полностью испорченный код. Я подумал о решении после прочтения ответов и нашел решение, которое отлично сработало. Он использует только одну функцию с предложением switch для различения различных вызовов обратного вызова:
var callback = function(sCallIdentifier, callbackParameters){
switch(sCallIdentifier){
case "ajaxOne":
doYourStuff(callbackParameters); //do your stuff for ajaxOne
ajaxTwo(function(newCallbackParameters){
/*define a anonymous function as actual method-callback and pass the call-identifier, together with all parameters, to your defined callback function*/
callback("ajaxTwo", newCallbackParameters);
});
break;
case "ajaxTwo":
doYourStuff(callbackParameters);
ajaxThree(function(newCallbackParameters){
callback("ajaxThree", newCallbackParameters);
});
break;
case "ajaxThree":
doYourStuff();
break;
}
});
Если это не очень хорошая идея, пожалуйста, дайте мне знать. Как я уже сказал, я не эксперт по JavaScript, но у меня это получилось неплохо.
Лучший,
Рене
* * 1008 Edit: * * 1010
Через некоторое время я обнаружил, что Обещания - гораздо лучший подход к решению этой проблемы.