2017-10-09 3 views
2

Lorsque vous utilisez la fenêtre setInerval est suspendu

.controller('overviewCtrl', function ($scope, $http, $interval) { 
 
     $scope.cardShow = false; 
 
     $scope.infoShow = true; 
 
     $scope.yes1 = false; 
 
     $scope.yes2 = false; 
 
     $scope.status = true; 
 
     $scope.arbitration = true; 
 
     $scope.notAccepted = true; 
 
     $scope.cardShowRegular = false; 
 
     $scope.check1 = false; 
 
     $scope.id = 53; 
 
     $scope.opportunitiesArr = []; 
 
     $scope.opportunity = []; 
 
     $scope.profile = []; 
 
     /*getting opportunities*/ 
 

 
     $scope.oppList = function() { 
 
      $http.get("https://serviceme.blynksystems.com:6443/createContract/fseoppurtunities/" + $scope.id) 
 
       .then(function (response) { 
 
        $scope.opportunitiesArr = response.data; 
 
        console.log("opportunities " + JSON.stringify($scope.opportunitiesArr)); 
 
       }, function (response) { 
 
        console.log("error" + response); 
 
       }); 
 
     } 
 

 
     /*$rootScope.$broadcast("sendOpportunities", $scope.opportunitiesArr);*/ 
 
     $scope.oppList(); 
 
     /*end of getting opportunities*/ 
 
     $scope.contactInfo = function (opport) { 
 
      $scope.opportunity = opport; 
 
      console.log("opportfjdufiu" + JSON.stringify($scope.opportunity)); 
 
      console.log("opport " + JSON.stringify(opport)); 
 
      /*$scope.customerId = opport.customer_id;*/ 
 
      /*$scope.serviceName = opport.service_name; 
 
      $scope.carModel = opport.car_model;*/ 
 
      /*$scope.driverEmail = opport.driver_email;*/ 
 
      /*$scope.statusOfFse = opport.status_of_fse;*/ 
 
      $scope.cardShow = true; 
 
      $scope.cardShowRegular = true; 
 
      $scope.infoShow = false; 
 
      /*posting the acceptance*/ 
 
      if (opport.driver_email != null || opport.driver_email != undefined) { 
 
       var data = { 
 
        "mechanic_id": $scope.id, 
 
        /*"customer_id": opport.customer_id,*/ 
 
        "driver_email": opport.driver_email, 
 
        "service_name": opport.service_name, 
 
        "car_model": opport.car_model, 
 
        "status": 2, 
 
        "counter_price_fse": "" 
 
       } 
 
      } else { 
 
       var data = { 
 
        "mechanic_id": $scope.id, 
 
        "customer_id": opport.customer_id, 
 
        /*"driver_email": opport.driver_email,*/ 
 
        "service_name": opport.service_name, 
 
        "car_model": opport.car_model, 
 
        "status": 2, 
 
        "counter_price_fse": "" 
 
       } 
 
      } 
 
      console.log("emergency" + JSON.stringify(data)); 
 
      var req = { 
 
       method: 'POST', 
 
       url: 'https://serviceme.blynksystems.com:6443/createContract/updatewhenfseaccepted', 
 
       data: data 
 
      } 
 
      $http(req).then(function (response) { 
 
       console.log("respose" + JSON.stringify(response.data)); 
 
      }, function (response) { 
 
       console.log(response); 
 

 
      }); 
 
      $scope.callFtn = function() { 
 
    setInterval($scope.contactInfo(opport), 3000); 
 
} 
 
$scope.callFtn(); 
 
      /*$interval(function() { 
 
    $scope.contactInfo(opport) 
 
}, 3000);*/ 
 
      /*posting the acceptance*/ 
 

 
     } 
 
     });

Je travaille sur project.I ioniques doivent vérifier l'état tous les après 5 secondes dans la réponse qui vient du serveur.Pour que j'utilise setinterval.But tout en utilisant cette méthode ma fenêtre est frappée.J'ai aussi essayé setTimeOut même si le même problème se répète.Comment puis-je résoudre ce problème.Voici mon code:

+0

Voyez-vous des erreurs? '$ interval' devrait aussi fonctionner. On dirait que quelque chose échoue –

+0

J'ai utilisé $ intervalle aussi.Mais dans la fonction contactInfo iam montrant un tag div.That div affiche après tant de temps. –

Répondre

0

Vous utilisez setInterval récursivement qui provoque finalement la fenêtre pour rester coincé. Veuillez voir ceci pour une solution alternative: https://stackoverflow.com/a/18687829/1912288.

Veuillez utiliser $interval dans Angular, car il recherche les changements de portée lorsque $interval est appelée et reflète les changements dans les liaisons. Ceci est fait en déclenchant le cycle de digestion.

+0

Merci. Avec $ interval, la fonction contactInfo appelle, mais la requête POST dans la fonction n'appelle pas. Je l'ai appris lorsque les consoles de la fonction impriment à chaque fois que contactInfo appelle toutes les 3 secondes sauf la console de requête POST dans le bloc de succès. –