Deferred and Ajax tests
by Riffic
JavaScript
var api = (function() {
var jqXHR = null;
return function(options) {
var url = options.url;
if (jqXHR && jqXHR.state() === 'pending') {
console.log("ABORTING OLD AJAX");
//Calls any error / fail callbacks of jqXHR
jqXHR.abort();
}
deferred = $.Deferred(function() {
this.done(options.success);
this.fail(options.error);
});
jqXHR = $.ajax({
url: url,
data: options.toSend,
dataType: 'jsonp'
});
jqXHR.done(function(data, textStatus, jqXHR) {
console.log( "Return data", data );
if (data.f && data.f !== "false") {
deferred.resolve();
} else {
deferred.reject();
}
});
//http://api.jquery.com/deferred.promise/
return deferred.promise();
};
})();
function options(foo, bar) {
this.url = "http://jsfiddle.net/echo/jsonp/";
this.toSend = {
f: foo,
b: bar,
delay: 5
};
this.success = function() {
console.log("OPTION SUCCESS");
};
this.error = function() {
console.log("a;dfjaskl;fj?");
};
}
var optsOne = new options(true, "one");
var myFirstDef = api(optsOne);
var optsTwo = new options(true, "two");
var mySecDef;
setTimeout(function() {
mySecDef = api(optsTwo);
myFirstDef = null;
console.log("FIRST DEF: ", myFirstDef);
}, 2000);