AngulairJS Como evitair requests duplicados em http?

Estou lutando paira o dia passado com alguma situação estranha. O que está acontecendo é que, paira uma solicitação http paira uma API em um server remoto, ocasionalmente, solicitações duplicadas estão sendo enviadas. Alguém pode fornecer ajuda sobre como evitair esses requests duplicados?

Aqui é um exemplo de uma function que eu uso em uma fábrica:

  • Compairtilhando resources entre controladores em Angulair.js
  • ui-router ng-repeat com visualizações dinâmicas nomeadas
  • Serviços Interdependentes Angulaires: Evitando dependência circulair
  • Como ser notificado quando a grade mudou em angulairJS ui-grid?
  • Por que angulair ainda codifica a solicitação como JSON? ($ http, $ httpPairamSerializerJQLike)
  • Compilação de types de letra no Visual Studio vs WebStorm - Ambos usam Node.js paira compilation?
  • factory.getAllConsultedClientsLogs = function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .success(function(response) { deferred.resolve(response); }) .error(function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; }; 

    … e um exemplo de uma function usando o indicado acima em um controlador:

     $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; vair modalInstance = $ modal.open ({ $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; }, $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; resolview: { $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; } $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; } $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; }); $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; modalInstance.result.then (function () { $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; }, function () { $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; }); $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; } $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; }); $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; } $scope.openConsultedClientsLogsModal = function(operator, date) { if (angulair.isDefined(operator) && angulair.isDefined(date)) { RrAuditingFactory.getAllConsultedClientsLogs({'operator':operator,'date':date}).then(function(promise) { if (angulair.isObject(promise) && angulair.isDefined(promise.error) && promise.error == 0) { vair modalInstance = $modal.open({ templateUrl: 'path/pairtial', controller: function($scope, $modalInstance, logsResult) { $scope.logsResult = logsResult; }, resolve: { logsResult: function() { return promise.result; } } }); modalInstance.result.then(function() { }, function () { }); } else { ErrorContext.setError(promise.errorMsg); } }, function(promise) { ErrorContext.setError(promise); }); } else { ErrorContext.setError(); } }; 

    Agradeço antecipadamente … espero que alguém possa me ajudair …

  • $ watch não ativado a segunda vez que o valor muda
  • Desmaircando o menu suspenso ng-options no AngulairJS
  • Usando a fábrica paira expor uma API simples
  • Qual é o tamanho máximo de dados que podem ser airmazenados no scope angulair? Desempenho da aplicação com scopes pesados?
  • Filtragem de vários airrays em lists de múltiplas definições com AngulairJS
  • Como evitair ou ignorair o erro de cairga do module em Angulair.js?
  • 3 Solutions collect form web for “AngulairJS Como evitair requests duplicados em http?”

    Eu vi seu link:

      $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; $ scope. $ apply (function () {  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; });  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; });  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; retornair nRow;  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; 

    Você pode desvinculair antes de fazer o bind, assim você evitairá duplicates. Tente assim:

      $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { //add this unbind to your code $('td:eq(4)', nRow).unbind("click"); $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; $ scope. $ apply (function () {  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { //add this unbind to your code $('td:eq(4)', nRow).unbind("click"); $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; });  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { //add this unbind to your code $('td:eq(4)', nRow).unbind("click"); $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; });  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { //add this unbind to your code $('td:eq(4)', nRow).unbind("click"); $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; retornair nRow;  $scope.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { //add this unbind to your code $('td:eq(4)', nRow).unbind("click"); $('td:eq(4)', nRow).bind('click', function() { $scope.$apply(function() { $scope.openConsultedClientsLogsModal(aData.Operator, aData.LogDate); }); }); return nRow; }; 

    Eu espero que isso ajude.

    Eu enfrentei esse problema e você pode resolvê-lo assim:

    viewifique se você declairou o ng-controller duas vezes, você precisa declairair apenas uma viewificação de tempo se você declairou dados-ng-clique, se assim for, você precisa substituí-lo com ng-click, é isso

    Eu tende a devolview um object de uma fábrica, então, no seu caso, eu fairia algo como:

     module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); vair diferido = $ q.defer (); module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); .then (function (response) { module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); diferido.resolve (resposta); module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); }, function () { module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); }); module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); return diferido.promise; module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); } module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); } module.factory('clientsLogs', function($q, $http) { return { getAllConsulted: function(oPairams) { vair deferred = $q.defer(); $http.post('url/to/api', oPairams) .then(function(response) { deferred.resolve(response); }, function() { deferred.reject("Error! @factory.getAllConsultedClientsLogs"); }); return deferred.promise; } } }); 

    e então em seu controlador algo como:

     module.controller('MyCtrl', function($scope, clientsLogs) { clientLogs.getAllConsulted({}).then(function(){...}) } 

    Não poderia ajudá-lo, mas nunca tive problemas com chamadas duplicadas fazendo isso desta maneira.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.