1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update javascript connection manager to latest feature set

This commit is contained in:
Luke Pulverenti 2015-02-15 19:33:06 -05:00
parent 12e5298463
commit f7bb1a627d
11 changed files with 494 additions and 217 deletions

View file

@ -0,0 +1,101 @@
(function (globalScope) {
globalScope.Deferred = {
Deferred: function () {
var self = this;
var done = [];
var fail = [];
var always = [];
var isOk = false;
var isDone = false;
var resolveScope;
var resolveArgs;
self.promise = function () {
return this;
};
self.done = function (fn) {
if (isDone && isOk) {
fn.apply(resolveScope || {}, resolveArgs);
}
else {
done.push(fn);
}
return self;
};
self.fail = function (fn) {
if (isDone && !isOk) {
fn.apply(resolveScope || {}, resolveArgs);
}
else {
fail.push(fn);
}
return self;
};
self.always = function (fn) {
if (isDone) {
fn.apply(resolveScope || {}, resolveArgs);
}
else {
always.push(fn);
}
return self;
};
self.resolveWith = function (scope, args) {
resolveScope = scope;
resolveArgs = args;
isOk = true;
isDone = true;
self.trigger();
};
self.rejectWith = function (scope, args) {
resolveScope = scope;
resolveArgs = args;
isOk = true;
isDone = true;
self.trigger();
};
self.trigger = function () {
var i, length;
if (isOk) {
var doneClone = done.splice(0);
for (i = 0, length = doneClone.length; i < length; i++) {
doneClone[i].apply(resolveScope || {}, resolveArgs);
}
}
else {
var failClone = fail.splice(0);
for (i = 0, length = failClone.length; i < length; i++) {
failClone[i].apply(resolveScope || {}, resolveArgs);
}
}
var alwaysClone = fail.splice(0);
for (i = 0, length = alwaysClone.length; i < length; i++) {
alwaysClone[i].apply(resolveScope || {}, resolveArgs);
}
};
return this;
},
when: function(promises) {
}
};
})(window);