до конца по этому куску я не в ехал в смысл.
но из того что понял могу предложить следующее.
1) doSomthing - можно бы разместить в замыкании,
в этом же замыкании вы могли бы хранить любую нужную вам информацию.
А вообще у вас адовый код, сто пудово можно проще )))
2) Можно по копать ещё в этом направлении.
Код в качестве примера идеи. Не уверен что он на 100% рабочий, но суть задумки думаю поймёте.
function doSomthing() {
var ajx = $.ajax(.....);
// прототип пользовательского обработчика
ajx.edr=function(d){};
// метод устанавливающий пользовательский обработчик
ajx.dataReady=function(f){
ajx.edr=f;
}
// обработчик ajax (если я правильно понял :) )
ajx.done(function{
var data = calcAndTransformSomeData();
// вызываем пользовательский обработчик
ajx.edr(data);
});
return ajx;
};
var job = doSomthing().dataReady( function(data){
//здесь data нам передадут в качестве параметра, и с его получением заворачиваться не надо.
// кроме прочего, метод в dataReady гарантированно будет вызван после calcAndTransformSomeData, а не до него. Что упрощает жизнь !!
alert(data);
console.log(data);
});