function ($q, $rootScope, $timeout, $log) {
var pending = [];
//...
ws.onopen = function () {
$log.debug("WS ready");
service.ready = true;
if (pending.lenght)
{
for (var i=0; i<pending.lenght;i++)
{
try{
pending[i]();
} catch(e) {
$log.error(e);
}
}
}
}
//...
var service = {
/* Calling function on server */
call: function (request) {
$log.debug("Sending request", request, ready);
send=function(){
ws.send(JSON.stringify(request));
}
if (this.ready){
send();
}
else{
pending.push(send);
}
return defer.promise;
}
};
}
'use strict'
это избавит вас от головной боли.$rootScope.$apply(function(){
callbacks[reply.id].cb.resolve(reply.result)
});