var foo = function foo(settings) {
// if settings passed , extend `$.ajaxSettings`
this.settings = $.extend({}, $.ajaxSettings, settings);
this.ajax = $.ajax;
this.promise = void 0;
this.execute = function execute() {
// set `this.promise` to `this.ajax`
this.promise = this.ajax.call($, this.settings);
// return `$.ajax` jQuery promise object
return this.promise
};
// if `this.promise` is defined , call `.abort()`
// on `this.promise`: `this.ajax` `$.ajax()`
this.abort = this.promise ? this.promise.abort() : this.promise;
};
var url = "https://gist.githubusercontent.com/"
+ "guest271314/6a76aa9d2921350c9d53/raw/"
+ "49fbc054731540fa68b565e398d3574fde7366e9/"
+ "abc.txt";
var request1 = new foo({"url":url});
request1.execute()
.then(function(data, textStatus, jqxhr) {
console.log(data, textStatus, jqxhr)
}, function(jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown)
});
var request2 = new foo({"url":url});
request2.execute().abort()
.then(function(data, textStatus, jqxhr) {
console.log(data, textStatus, jqxhr)
}, function(jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>